»ö« 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.
jnthn I'm happy to see improvements across the board 00:00
The faster we build CORE.setting, the faster we're building user programs.
TimToady and parrot from 92 to 90, fwiw 00:01
00:02 kurahaupo_ left, rurban left
japhb I wonder what made jvm parse so much faster (note, haven't backlogged, irclog pointer suffices if it's too much to explain) 00:05
00:05 eternaleye left
timotimo hey japhb :) 00:06
jnthn japhb: Hard to know, but there's been a bunch of compiler improvements in the last days.
japhb But TimToady said his previous JVM build was within the last 12-24 hours. So something you did today had a huge effect. 00:07
TimToady is possible something was interfering with the old one, if that's wallclock 00:08
timotimo our dynamic variables got cheaper 00:09
to compile
jnthn Yeah but that's on Moar 00:10
timotimo oh? only on moar?
jnthn Though we could port that improvement to JVM
timotimo ah, i meant the change in $*WORLD
er .. World.nqp
jnthn ah
timotimo dunno what else happened that could affect stage parse
jnthn No, me either...other than a minor tweak or two in NQP 00:11
TimToady well, maybe my cpu was too hot, and running slower :)
maybe my jvm was too tired that evening 00:12
00:12 dmol left
jnthn :) 00:13
The Moar one fits what I'm seeing, fwiw.
00:13 eternaleye joined
jnthn OK, enough today I think :) 00:13
'night
TimToady o/
timotimo jnthn: while you're gone i'll do a benchmark run i think :) 00:14
japhb o/ jnthn
TimToady jvm parse back up to 103 seconds!?! 00:18
must be some kind of throttling
unless jvm is trying to remember things from run to run, and only succeeding some of the time
moar down to 30 00:20
00:22 nbrown left
TimToady maybe I should put my laptop into an ice bucket 00:22
timotimo dry ice* 00:23
TimToady parrot now down to 85, and I think maybe I've been blocking the fan input for some of these runs 00:24
they didn't design this laptop to work well on a lap, apparently... 00:25
japhb Because why would anyone want that? 00:26
timotimo using laptops on laps is dangerous!
japhb Clearly contraindicated 00:27
timotimo TimToady: do you have ideas why our stringification of numbers is so far behind perl5's? except for "a lot of work went into that" 00:30
TimToady um, doesn't P5 just use atof()?
oh, other way 00:31
last I knew, it was just using sprintf with a g format of some sort
timotimo oh, hm 00:32
TimToady of course, all of P5's numbers are essentially native, internally
timotimo ah, smart_strify first tries to unbox a str, then looks at the Str method 00:34
TimToady plus if you're using native C types, you can constrain the amount of memory you need to allocate pretty closely
probably our buildin types should not be using late dispatch for coercions 00:35
timotimo and that calls p6box_s(nqp::tostr_I(self))
but smart_strify doesn't get spesh'd yet
it could become a method call and then possibly get inlined
maybe smart_strify should try to unbox an int and stringify that when unboxing a string fails? 00:36
or is that semantically wrong?
TimToady well, unbox to what native type? 00:38
ptr to libtommath?
and what about the cheater ints? 00:39
BenGoldberg Cheaters never prosper? 00:42
00:43 nbrown joined, nbrown left, nbrown_ joined
timotimo smart_strify cannot be called on cheaper ints, as they would be in an int register and smart_strify would only accept object registers 00:44
and Int would unbox to a P6int
which is a small wrapper around either a tommath integer struct or one of those "cheap bigints" 00:45
00:47 kurahaupo_ joined 00:50 cognome left, cognominal left, cognome joined
timotimo t.h8.lv/p6bench/2014-08-02-all_moar...ments.html - recent benchmarks 00:51
huh, our for loop regression still exists? 00:53
00:54 cognome left 00:57 xenoterracide joined
dalek rl6-bench: 412f134 | (Geoffrey Broadwell)++ | analyze:
Factor out plot header and footer into separate routines
01:02
rl6-bench: 44d2f57 | (Geoffrey Broadwell)++ | analyze:
Stub summarize_results_html_plot_history()
rl6-bench: d1831ac | (Geoffrey Broadwell)++ | / (2 files):
Add jqplot.dateAxisRenderer plugin for use in history plots
rl6-bench: a433aaf | (Geoffrey Broadwell)++ | analyze:
Add do_summary_plot() to JS, stub a summary chart, and enable history plots for testing
rl6-bench: 42b0c49 | (Geoffrey Broadwell)++ | analyze:
Minor whitespace fix
rl6-bench: c0cc426 | (Geoffrey Broadwell)++ | analyze:
First draft of `bench --format=html_plot history`

Note: this requires a new jqplot plugin, so make sure to grab:
   jqplot/plugins/jqplot.dateAxisRenderer.min.js
japhb timotimo, jnthn: This latest perl6-bench update should be fun. :-) 01:03
timotimo ooooh 01:04
maybe i should time a fresh batch of moarvm nqp's and rakudo's back to the first version that has the combined makefile thing :3 01:05
japhb The next thing I want to do is history plot the individual tests, now that I have the general plot type working
But that may need to wait for another day, since we have guests this weekend
Yeah, I did the following for a decent comparison: 01:06
./bench --format=html_plot history perl5/v5.18.0,v5.18.1,v5.18.2,v5.20.0 nqp-moar/2014.01,2014.02,2014.03,2014.04,2014.05,2014.06,2014.07,master rakudo-moar/2014.01,2014.02,2014.03,2014.04,2014.05,2014.06,2014.07,nom 01:07
timotimo oh, we can has commas there! 01:09
the more you know
japhb But I think bringing in at least parrot, and if you can stand it, (a subset of) jvm runs too
timotimo can you show the results?
japhb would make for a really nice chart for jnthn++'s talk later this month
timotimo: Unfortunately, they're hidden behind the firewall. :-(
timotimo aaw, ok 01:10
japhb Right there with you.
Hmmm, I wonder if I can get authorization to make it more external. Not this week, that's for sure. 01:11
timotimo, re: commas: Yeah, most of the bench commands for which it makes sense understand that. Plus you can combine with shell expansion, so e.g. nqp-moar/2014.0{1,2,3,4,5,6,7},master 01:13
timotimo darn!
that's nice
japhb Hmm, actually you'd have to include escaped commas, I suppose. Well, you understand my point.
japhb goes to check 01:14
Ah! That's the mistake I had 01:15
nqp-moar/{2014.0{1,2,3,4,5,6,7},master}
Anyway, there's a lot of ways to make it easier to read. :-) 01:16
timotimo aye
okay, it'll be building and timing a gigantic slew of versions now
and i'll go to bed while that happens :)
japhb GOOD THINKING
:-)
bus stop & 01:17
01:24 nbrown_ left 01:36 iarna joined 01:40 klapperl joined 01:43 akaseki joined 01:44 klapperl_ left 01:45 Jasper__ joined, aoseki left 01:46 FROGGS_ joined, aoseki joined 01:47 nbrown joined 01:49 akaseki left, FROGGS left, Sqirrel left 01:55 Jasper__ left 02:10 anaeem1 joined 02:13 anaeem1 left 02:14 noganex_ joined 02:17 noganex left, aoseki left 02:18 akaseki joined 02:22 dayangkun_ joined 02:34 takesako left 02:41 aoseki joined 02:43 akaseki left 02:50 takesako joined 02:54 nbrown left 02:55 nbrown joined 03:00 iarna left 03:12 Akagi201 joined 03:13 takesako left 03:19 rurban joined, Sqirrel joined 03:22 c1sung joined 03:28 takesako joined 03:30 nbrown left, slavik left 03:34 takesako left 03:42 slavik joined 03:50 takesako joined 03:51 nbrown joined, nbrown left 04:11 khisanth_ joined
dalek ast/S26-WHY: 8c77c44 | (Rob Hoelz)++ | S26-documentation/why-leading.t:
Add missing semicolons
04:15
ast/S26-WHY: 8c03955 | (Rob Hoelz)++ | S26-documentation/why-leading.t:
Fix incorrect check for param WHEREFORE
ast/S26-WHY: 97606d2 | (Rob Hoelz)++ | S26-TODO.md:
Fix typo in TODO
ast/S26-WHY: c33c492 | (Rob Hoelz)++ | S26-TODO.md:
Make a note of another large task
ast/S26-WHY: 2129598 | (Rob Hoelz)++ | S26-TODO.md:
Add Miscellanea category to TODO

Until I figure out a better home for them...
04:21 ventica joined 04:22 BenGoldberg left 04:29 kurahaupo_ left
dalek ast/S26-WHY: 947e4a6 | (Rob Hoelz)++ | S26-documentation/why-leading.t:
Fix == to ===

We want identity, not numerical, comparison
04:29
ast/S26-WHY: 36b94f1 | (Rob Hoelz)++ | S26-documentation/why-leading.t:
Fix comparands for WHEREFORE checks
ast/S26-WHY: 06e2e7a | (Rob Hoelz)++ | S26-documentation/why-leading.t:
Fix invocants for WHEREFORE tests
04:30 xenoterracide left, cibs left 04:39 cibs joined 04:40 takesako left 04:43 darutoko joined 04:55 takesako joined 04:57 rurban left 05:19 takesako left 05:25 croque joined
croque ops.. 05:26
05:26 gfldex joined
croque Hello, Please could someone help me? 05:29
I would like to install the Perl 6 here in my linux.
How should I proceed? Thank you!
Woodi hi croque 05:33
croque Woodi, hello man 05:34
;)
Woodi at the moment the best Perl6 compiler is Rakudo
rakudo.org
and Rakudo Star is ready-to-try package 05:35
croque hm
I'll try to install here, if the case goes wrong, I notice! : P
LOL
^^
Woodi gl and waiting for your experience raport :)
croque rakudo.org/downloads/star/ 05:36
:P
05:36 takesako joined
TimToady or use rakudobrew 05:36
croque hm
one minute :P
Can be directly installed by the terminal? 05:38
Or even if I download the file, unzip and then install?
Woodi I think command line is unavoidable :) 05:40
05:41 Rotwang left
croque Downloaded here, now I'll see how I do, because I downloaded the rakudo.msi Woodi 05:42
jaeijae
ops 05:43
Woodi *.msi files are for Windows
croque impossible! OAEOKe
Woodi, yeah I see now ;P
.tar.gz
go!
Woodi, I see the readme, has two commands .. 05:53
I'm use fedora..
yum bla bla bla..
;P
rs
05:54 xinming joined
croque I believe it's dependencies, and then configure the Rakudo, second has written here .. 05:55
:)
Woodi,
06:01 takesako left 06:02 raiph joined
croque Woodi, Here tried, without success .. 06:06
;T
Woodi what happened ? 06:10
06:10 ventica left
Woodi Rakudo can use 3 backends, java, parrot and moarvm, which one you try? 06:11
croque java errors.. 06:12
;T
jvm
y.y
Woodi you have jave packages installed on your linux ?
06:12 takesako joined
croque I have installed java with netbeans .. 06:13
:)
However when I type java-version command gives error, nothing appears, same with the command javac-version! 06:14
;T
Woodi you need java installed system wide then build proces can detect it 06:15
croque ok
Woodi btw, you can try standard fedora packages, maybe they have rakudo ready ?
croque yum install java only?
;T
Woodi debian have rakudo 2014.03
yum installs everything ! ;) 06:16
croque hm
ok
Woodi I drop redhat around redhat 9, sory :)
croque I had installed Debian here, I had a crap on pc here, not because of Debian, Fedora and choked liked (Although I prefer Debian ..) However I do not want to take Fedora and Debian, and, and you, uses Debian? 06:18
Woodi Linux is Linux, distros are just shells :) 06:19
you use which one is more convenient :)
which is Debian of course :)
so you try to compile rakudo from sources ? 06:20
croque Woodi, ye 06:21
=)
tar.gz, unzip, make, make install.. error! 06:22
;T
Already installed java
and now? y.y 06:23
;T
psch croque: can you paste the error onto some pastebin and put the link here?
croque: pastie.org or something like that 06:24
croque Man, fumbled around here, only one of the three backends installed appeared at the end .. =) 06:25
Follow what is said in the readme, in the commands to install the backends in one, gave error! 06:26
Woodi croque: then you need to get "nqp" compiler then real perl6 compiler "rakudo"
croque ok 06:27
How should I proceed now?
yum install nqp?
..
Woodi tell us first what you do so far ?
you try: perl Configure.pl --backend=jvm --gen-nqp 06:28
psch croque: what Woodi says, i think you're just missing --gen-nqp
croque: you can also use the command for all backends , if you add --gen-nqp 06:29
croque On RedHat/Fedora/CentOS, the components can be installed with
yum groupinstall development-tools
yum install libicu-devel readline-devel
Configuring Rakudo Star
-----------------------
The easiest way to build Rakudo Star for a particular backend is:
$ perl Configure.pl --backend=moar --gen-moar # MoarVM
$ perl Configure.pl --backend=parrot --gen-parrot # Parrot
$ perl Configure.pl --backend=jvm --gen-nqp # JVM
You can also build for all backends:
$ perl Configure.pl --backend=parrot,jvm,moar --gen-parrot --gen-moar
The commands!
yum groupinstall development-tools and yum install libicu-devel readline-devel ok! 06:30
The rest gave bug, mainly referring to the jvm ... 06:31
;T
psch croque: maybe try without jvm? 06:32
Woodi you tried all of them ? :)
croque ye
06:32 aoseki left
croque only one 06:33
;T
06:33 akaseki joined
TimToady maybe try github.com/tadzik/rakudobrew instead 06:35
croque ok TimToady 06:36
;D thanks ;P
TimToady you'll need to make sure you have git installed first 06:37
croque I enter all commands that have there, right? TimToady 06:39
ops ;T
06:40 thou left
croque Can not find a directory here and then out of nowhere! 06:45
o.o
TimToady has to go to bed, but the .eu folk should be awake soon and can help 06:51
croque man, taking.. 06:55
;T
psch croque: can you copy and paste the error to a website?
croque: preferably *not* into the channel :)
06:55 nbrown joined
croque psch, ok 06:55
sorry =T
TimToady, thanks man
;D
06:57 nbrown left
croque moar been installed, must have been a mistake that was later corrected .. 06:57
..
TimToady, I did as you told me you have on site, and now, how do I test? 06:59
:)
07:00 ventica joined 07:01 xinming left, xinming joined
croque psch, The site that Tim has passed me talking about how to install perl 6 (rakudo), I did everything and it was a success, and now how do I test? 07:02
:P
Typed here: Perl 6, there appeared a small arrow: DDD 07:03
Woodi, success man
LOL :DDD
07:03 rindolf joined
croque leaves the terminal, I was testing, gave o.o error 07:06
tsc tsc..
bye 07:10
;D
07:10 croque left 07:16 chenryn joined 07:17 PotatoGim left, PotatoGim joined 07:44 raiph left 07:46 takesako left 07:48 sivoais joined, raiph joined
masak morning, #perl6 07:52
Woodi++ psch++ TimToady++ # helping croque 07:53
PerlJam It's night time here and I haven't gone to bed yet, so ... yeah, welcome to the wee hours of the morning :) 07:54
masak :)
08:02 thou joined, takesako joined 08:06 thou left 08:25 cooper_ left 08:29 chenryn left 08:36 kivutar joined 08:37 dmol joined 08:43 takesako left 08:51 anaeem1 joined
timotimo o/ 08:53
08:54 cibs left
timotimo my huge slew of benchmarks has reached rakudo-moar/nom 08:54
which is pretty good considering it had all nqp-moar releases going back to 2014.01 and three perl5 versions before it 08:55
08:56 raiph left 08:59 takesako joined 09:00 chenryn joined 09:04 takesako left 09:11 spider-mario joined 09:14 cibs joined 09:19 takesako joined 09:21 chenryn left
timotimo nqp-parrot/2014.04 at the moment 09:30
09:45 mr-foobar left, mr-foobar joined 09:46 chenryn joined
lizmat good *, #perl6! 09:50
09:50 thou joined
lizmat seems that one of the combinations tests was not flapping after all: 09:50
m: say ((1,), (2,), (3,)).list eqv [1, 2, 3].combinations(1) # test thinks this should be true 09:51
camelia rakudo-moar a1a236: OUTPUT«False␤»
masak m: say [1, 2, 3].combinations(1).perl
camelia rakudo-moar a1a236: OUTPUT«([1], [2], [3]).list␤»
masak looks to me like those are itemified arrays in there.
lizmat m: say ((1,), (2,), (3,)).list eqv [1, 2, 3].combinations(1).tree.map(*.sort).tree # this is the real actual test
camelia rakudo-moar a1a236: OUTPUT«False␤»
lizmat m: say [1, 2, 3].combinations(1).tree.map(*.sort).tree.perl 09:52
camelia rakudo-moar a1a236: OUTPUT«(1, 2, 3).list␤»
masak scratches his head
lizmat m: say ((1,), (2,), (3,)).list.perl
camelia rakudo-moar a1a236: OUTPUT«((1,), (2,), (3,)).list␤»
09:52 takesako left
masak my intuition goes "huh?" on this one :) 09:52
lizmat t/spec/S32-list/combinations.t is the file 09:53
09:55 thou left
lizmat fwiw, I'm huhing too :-) 09:55
otherwise, the last updates to NQP and Moar: wow! 10:00
Files=908, Tests=31957, 205 wallclock secs ( 9.04 usr 4.16 sys + 1280.14 cusr 171.01 csys = 1464.35 CPU)
compared to ~ 12 hours ago: 10:02
Files=908, Tests=31827, 212 wallclock secs ( 8.95 usr 3.92 sys + 1314.99 cusr 171.08 csys = 1498.94 CPU)
I guess with only 1 casualty: combinations.t 10:03
10:08 takesako joined 10:10 gfldex left
dalek kudo/nom: 8d56c56 | (Elizabeth Mattijsen)++ | INSTALL.txt:
Modernize INSTALL.txt

Make MoarVM more prominent and make it match the install instructions in
  README.md.
10:16
10:16 takesako left 10:20 kivutar left 10:29 gfldex joined 10:31 takesako joined 10:33 noganex_ left 10:43 kurahaupo_ joined, noganex joined 10:45 xragnar is now known as Guest43942, xragnar_ joined, Guest43942 left, xragnar_ is now known as xragnar 10:53 Sqirrel left 11:11 chenryn left 11:12 virtualsue joined 11:14 itz_ is now known as itz 11:15 gfldex left 11:23 FROGGS_ is now known as FROGGS 11:28 takesako left 11:37 xinming left 11:39 thou joined 11:40 chenryn joined 11:43 thou left, takesako joined 11:54 anaeem1 left 11:55 anaeem1 joined 11:59 anaeem1 left 12:03 user3 joined 12:10 rindolf left 12:12 dmol left 12:13 pecastro_ joined, pecastro left 12:18 pecastro_ left 12:23 pecastro joined
psch m: $_ = "abc"; say (m:g/./).WHAT # that's supposed to be a 'fake Match object', cf S05:4659 12:23
synopsebot Link: perlcabal.org/syn/S05.html#line_4659
camelia rakudo-moar 8d56c5: OUTPUT«(List)␤» 12:24
psch i'm not sure what a 'fake Match object' should be though
i have a patch that stuffs the real matches into .list of a new Match, but that doesn't easily translate to s:g///
and that also doesn't seem really clean, either 12:25
12:30 xenoterracide joined 12:31 takesako left
itz hmmm I can't build panda 12:33
timotimo there's a pull request for panda that claims to fix building 12:34
maybe i should test and merge it
since i have commit access to panda 12:35
itz thanks .. just trying it
dalek nda: f23974c | nbrown++ | / (2 files):
Fix panda to work with new compiled suffixes
12:37
nda: 7a7a770 | timo++ | / (2 files):
Merge pull request #92 from nbrown/master

Fix panda to work with new compiled suffixes
  nbrown++
tadzik faster than I managed to log in to github 12:38
itz works for me
timotimo i don't know who nbrown is, but that was a quick and good fix 12:44
12:44 xinming joined 12:46 takesako joined, ren1us left 12:50 iarna joined 13:02 PotatoGim left 13:09 iarna left 13:15 colomon left 13:16 user3 left
masak psch: re 'fake Match' object -- every time I see us trying to cheat the object hierarchy like that, we end up regretting it, one way or another. IMHO. 13:21
itz github.com/masak/ufo/pull/17 13:23
psch masak: afaiu, we actually need a real Match object anyway, because otherwise smartmatching breaks. and if it .perls like a Match and smartmatches like a Match... 13:25
13:27 thou joined
psch at the moment i'm primarily wondering how to get multiple matches to behave as one - the approach mentioned above leaves everything but .list unassigned, which seems kinda-sorta like a 'fake Match' 13:27
13:29 dayangkun_ left 13:30 chenryn left 13:31 thou left 13:33 rurban joined
psch m: $_ = "abc"; m:g/./; say $/ # the interaction between m:g// and $/ also confuses me slightly 13:41
camelia rakudo-moar 8d56c5: OUTPUT«「c」␤␤»
13:42 ventica left 13:44 gfldex joined, cognome joined, cognominal joined 13:46 cognominal left, cognominal joined 13:47 cognominal left 13:53 chenryn joined
timotimo um 13:55
i think the spectest harness doesn't like tests exit-code-ing with the number of failing tests if that number happens to be 1 13:56
it'll then say the test result is "dubious"
hoelzro: you worked on that recently, no?
13:56 BenGoldberg joined
masak psch: that value of $/ feels more like p5-think than p6-think to me. 13:59
13:59 dmol joined
flussence timotimo: that matches how P5's test modules do it; an abnormal exit that the code can detect should exit with 255 though. 14:00
.oO( yay, all those moar improvements mean my module's passing 18/50 tests instead of 17/50 before crashing... )
14:02
timotimo %)
what module is that?
14:02 darutoko- joined
flussence Test::Corpus, it hasn't worked in a while now. Seems to be a GC bug too and I know those are a massive pain to track down... 14:03
timotimo oh wow
what does the crash look like?
what does it smell like?
what does it taste like?
flussence I was just gonna get to that :)
gist.github.com/flussence/0eeb33d93f24946b8ca8
that's one I caught a few days ago 14:04
timotimo er ... yeah, that doesn't seem good
the crash after the 18th test looks the same?
maybe with a different function causing the gc to run
flussence it's either a segfault or "Internal error: zeroed target thread ID in work pass", I'm getting the latter right now 14:05
timotimo t/spec/S17-lowlevel/lock.rakudo.moar .......................... Dubious, test returned 1 (wstat 256, 0x100)
that's how the test file that has 1 fail returns
i feel like i asked this before already; do you use any of the asynchronous I/O stuff there?
14:05 darutoko left
flussence nope, though I do use normal IO... 14:06
14:06 darutoko joined
flussence (maybe it's barfing because I have an open() nested in two levels of currying run in a tight loop? :) 14:06
14:07 darutoko- left
flussence fwiw, that test file you mention runs fine here 14:07
timotimo yes, when i run it manually, it works fine ... 14:08
flussence and for some reason, my own thing runs all its tests *until* I try to install it through panda :( 14:11
timotimo could be caused by precompilation in that case 14:12
flussence well, `panda install .` just worked so I'm horribly confused now. Finally got what I wanted though :D
14:14 xenoterracide left 14:22 virtualsue left
nwc10 nom^ happy 14:23
oops
wrong window for an up
14:34 darutoko- joined 14:35 nbrown joined 14:36 darutoko left, darutoko joined 14:37 molaf__ joined 14:39 darutoko left, darutoko- left 14:40 gfldex left, molaf_ left 14:46 takesako left 14:48 nbrown left 14:50 nbrown joined 14:54 nbrown_ joined, nbrown left 14:55 nbrown joined, nbrown_ left 14:58 xinming left 15:04 takesako joined 15:13 xinming joined 15:14 gfldex joined 15:15 thou joined
dalek p: fadd779 | jnthn++ | / (4 files):
Update to simpler MAST::Label API.

We already were using labels as their own identity in practice, so the time and memory involved in storing a name in each of them was a waste.
15:17
15:18 xinming_ joined, xinming left
timotimo my benchmark run is up to rakudo-parrot/nom 15:18
after that come a few nqp-jvm and a few rakudo-jvm test runs 15:19
dalek kudo/nom: f5d1870 | jnthn++ | / (2 files):
Update to new MAST::Label API.

Includes NQP_REVISION update, which also updated MOAR_REVISION.
jnthn Please note that ^^ is a very breaking change across the Rakudo/NQP/Moar stack; don't try and get away with not doing an NQP re-build.
15:20 thou left 15:22 dwarring left 15:26 xinming joined
timotimo stage mast is now at 10.6, don't know what it was at before 15:28
ah, ok, that was no real change 15:29
15:29 xinming_ left
FROGGS nice, stage parse is now 39s here, and was about 46s a week ago :o) 15:33
15:36 virtualsue joined 15:37 takesako left
cognome here stage parse is 46s with moar. Was 1 min 2/3 month ago. And the build is 1m44 15:40
dalek ast/S26-WHY: 3091031 | duff++ | S26-documentation/why-leading-alt.t:
An alternate formulation of why-leading.t
15:41
hoelzro timotimo: I did 15:42
yoleaux 07:52Z <PerlJam> hoelzro: Have a look at gist.github.com/perlpilot/4069feea4b8a3afc143b I was thinking of reformulating the WHY tests like this. What say you?
07:56Z <PerlJam> hoelzro: For most of the invocations of test-leading, $thing and $wherefore are the same. I wonder if that should just be one parameter rather than two.
07:57Z <PerlJam> hoelzro: Anyway, if this works out, something similar could be done with the other WHY tests
15:26Z <PerlJam> hoelzro: Ignore that previous gist. I was tired or something. Have a look at gist.github.com/perlpilot/6bd0ce11b61cc886c532 instead. :-) 15:43
15:41Z <PerlJam> hoelzro: I've committed my reimagination of why-leading.t as why-leading-alt.t If you like where it's going, feel free to replace why-leading.t.
hoelzro PerlJam: that looks good to me 15:44
I'm going to try get my current HEAD to pass before integrating that, though
15:44 anaeem1 joined 15:49 takesako joined 15:51 zakharyas joined 16:01 nbrown left
dalek ast: db80199 | TimToady++ | S32-list/combinations.t:
combinations returns a list of arrays these days
16:03
16:04 kivutar joined 16:05 isBEKaml_mobile joined
dalek ast: 52f9ad5 | TimToady++ | S32-list/combinations.t:
should test 0 case as well
16:06
TimToady if someone wants to translate that to a permutations.t, that would be LHF
16:07 colloid joined 16:12 anaeem1 left
timotimo here we go ... nqp-jvm/2014.01 getting benchmarked ... 16:12
16:13 colloid left, anaeem1 joined 16:14 colloid joined
TimToady masak: you must be thinking of m:g/foo/ wrong if you think it's not a Match; it's just sugar for /.*? <( (foo)+ % .*? )>/ or so 16:15
m: $_ = 'a foobar food fool'; /.*? <( (foo)+ % .*? )>/; say $/ 16:16
camelia rakudo-moar 8d56c5: OUTPUT«「foobar food foo」␤ 0 => 「foo」␤ 0 => 「foo」␤ 0 => 「foo」␤␤»
16:17 anaeem1 left
TimToady and in terms of pragmatics it must return a Match to work as a smartmatch result while having a list nature 16:18
timotimo i was quite pleased to find that our gen-cat.nqp doesn't feel slower than the original perl5 version
TimToady unless your are willing to revisit the OKness proposal, but I think a small list of result types is probably the right way to go
16:19 isBEKaml_mobile left
TimToady and s:g/// is just a match with side effects, from the standpoint of smartmatching 16:19
So I think your mis-givings are really mis-takings. :) 16:20
16:21 cooper_ joined
TimToady and I hope we're not turning "p5-think" in a synonym for "wrong" 16:26
*into
masak TimToady: not willing to revisit the OKness proposal ;)
TimToady: what you said about Math above sounds like it could work -- except, I always have to explicitly .list my Match objects to iterate them. 16:27
TimToady: I'm not using "p5-think" as a synonym for "wrong". I'm using it to contrast ideas from Perl 5 with ideas from Perl 6. 16:28
16:28 BenGoldberg left
TimToady well, which ideas are you contrasting here? 16:28
smartmatching is a p6 idea 16:29
masak it's always been about making new mistakes, not making the same ones or -- heaven forbid -- thinking that these mistakes are optimal :)
TimToady well, returning list as a smartmatch result is currently a mistake
psch fwiw, here is match according to how i understand S05:4121 gist.github.com/peschwa/e6d1bb971d5566417911
synopsebot Link: perlcabal.org/syn/S05.html#line_4121
masak TimToady: I was contrasting Perl 5's idea of always filling the last match into $1, $2, etc, discarding the prior ones.
TimToady: against Perl 6's idea of keeping lists of matches around. 16:30
psch i have that implemented, but i'll have to think a bit more about how that translates to s///
TimToady P5 also keeps list around if you use the match in list context, so I don't see the contrast here
masak $/ ended up containing the 'c' match in the example I was commenting on. 16:31
TimToady that's just a bug
16:32 nbrown joined
masak $ perl -E '$_ = "abc"; s/(.)/z/g; say $1' 16:32
c
TimToady: I meant that behavior.
TimToady yes, that's a "feature" we're leaving behind, but that's not what the specs are asking for wrt m:g// and s:g/// 16:33
masak ok, good :)
TimToady m: $_ = 'a foobar food fool'; /.*? <( (foo)+ % .*? )>/; say @/
camelia rakudo-moar 8d56c5: OUTPUT«===SORRY!=== Error while compiling /tmp/T24hcZ4rGB␤Unsupported use of @/ variable␤at /tmp/T24hcZ4rGB:1␤------> od fool'; /.*? <( (foo)+ % .*? )>/; say ⏏@/␤ expecting any of:␤ argument list␤ …»
TimToady m: $_ = 'a foobar food fool'; /.*? <( (foo)+ % .*? )>/; say @$/ 16:34
camelia rakudo-moar 8d56c5: OUTPUT«「foo」␤ 「foo」␤ 「foo」␤␤»
TimToady m: $_ = 'a foobar food fool'; say join ":", /.*? <( (foo)+ % .*? )>/;
camelia rakudo-moar 8d56c5: OUTPUT«␤»
TimToady m: $_ = 'a foobar food fool'; say join ":", /.*? <( (foo)+ % .*? )>/[];
camelia rakudo-moar 8d56c5: OUTPUT«␤»
TimToady m: $_ = 'a foobar food fool'; say join ":", m/.*? <( (foo)+ % .*? )>/; 16:35
camelia rakudo-moar 8d56c5: OUTPUT«foobar food foo␤»
TimToady m: $_ = 'a foobar food fool'; say join ":", m/.*? <( (foo)+ % .*? )>/[];
camelia rakudo-moar 8d56c5: OUTPUT«foo foo foo␤»
TimToady m: $_ = 'a foobar food fool'; say join ":", m/.*? <( (foo)+ % .*? )>/.list;
camelia rakudo-moar 8d56c5: OUTPUT«foo foo foo␤»
TimToady something seems buggy there too 16:36
masak future: NYI
TimToady perhaps Match should behave a bit more like a parcel 16:37
flussence m: my $r = 1..12; say '0123456789abcdef' ~~ / . ** {$r} / 16:38
camelia rakudo-moar 8d56c5: OUTPUT«「0123456789ab」␤␤»
flussence \o/
I've wanted that to work for *years*
TimToady too :)
masak yes, that's excellent. 16:39
16:39 zakharyas left
masak is totally going to slang the ability to write it as / . ** 1..12 /, though :) 16:39
jnthn slang it? 16:40
m: say '0123456789abcdef' ~~ / . ** 1..12 /
camelia rakudo-moar 8d56c5: OUTPUT«「0123456789ab」␤␤»
masak oh, wait? that *works*? 16:41
flussence just not with a variable there (yet)
masak wow.
jnthn Yes, what FROGGS++ fixed was like
m: say '0123456789abcdef' ~~ / . ** {1..12.rand} / for ^3 16:42
camelia rakudo-moar 8d56c5: OUTPUT«This type cannot unbox to a native integer␤ in method DYNQUANT_LIMITS at src/gen/m-CORE.setting:13217␤ in method ACCEPTS at src/gen/m-CORE.setting:13300␤ in block at /tmp/gp_59IZBGH:1␤␤»
jnthn m: say '0123456789abcdef' ~~ / . ** {1..12.rand.Int} / for ^3
camelia rakudo-moar 8d56c5: OUTPUT«「012345678」␤␤「0123」␤␤「01234」␤␤»
jnthn FROGGS: May want to fix the first one :)
That is, code to choose the range
Or a variable containing one.
masak oh, I was thinking of / x ** $y / -- which (for backwards compat reasons) gets a warning and becomes / x+ % $y /. 16:43
that's what I'm gonna slang so it really means / x ** $y / :) 16:44
timotimo how is that backwards compatibility?
flussence m: say 40.631/32.680
camelia rakudo-moar f5d187: OUTPUT«1.243299␤» 16:45
masak timotimo: '%' used to be spelled '**'
flussence getting rid of that one hacky line just made Text-Tabs-Wrap 25% faster
masak timotimo: (overloading the integer rhs case with the atom rhs case)
timotimo flussence: \o/ 16:46
16:51 thou joined 16:52 raiph joined 16:55 haroldwu joined 17:00 rurban left, thou left 17:03 ivanshmakov left
FROGGS ohh, the Num case... 17:08
m: say '0123456789abcdef' ~~ / . ** {1..12.6} / 17:10
camelia rakudo-moar f5d187: OUTPUT«This type cannot unbox to a native integer␤ in method DYNQUANT_LIMITS at src/gen/m-CORE.setting:13217␤ in method ACCEPTS at src/gen/m-CORE.setting:13300␤ in block at /tmp/TGo2FrBtmQ:1␤␤»
jnthn m: say '0123456789abcdef' ~~ / . ** {12.6} / 17:12
camelia rakudo-moar f5d187: OUTPUT«This type cannot unbox to a native integer␤ in method DYNQUANT_LIMITS at src/gen/m-CORE.setting:13221␤ in method ACCEPTS at src/gen/m-CORE.setting:13300␤ in block at /tmp/sMOgHKwEaP:1␤␤»
jnthn That one too :) 17:13
FROGGS alrady testing the fix...
jnthn FROGGS++ 17:15
dalek kudo/nom: 4e9338a | (Tobias Leich)++ | src/core/Cursor.pm:
handle Num case in blocks in quantifiers in regexes
kudo/nom: e036e23 | (Tobias Leich)++ | src/Perl6/Grammar.nqp:
handle the case where perl6 -Mfoo switches to a slang

In the common case where this is not the case it is just an istype check and the call to LANG.
17:20
17:21 ventica joined 17:23 chenryn left
masak FROGGS++ 17:23
17:25 xinming left
FROGGS btw, since all of v5 is pure Perl6 (or five) right now, I can factor the rakudo specific bits in a Slangish module, which then provides grammar and action basics 17:25
as well as EXPR and O and World specific glue stuff 17:26
17:26 xinming joined
FROGGS control structures, variable (non-)declaration and lookup, strings with interpolation and subroutines already do work 17:29
I am currently working on unbusting regexes
17:41 ivanshmakov joined 17:52 cognome left 17:53 cognome joined
lizmat FROGGS++ for v5 # can't be said enough 17:55
17:57 cognome left
dalek c: 4eaa349 | (Steve Mynott)++ | index.p6:
fix index building and add simple key look
18:01
FROGGS lizmat: btw, the cpan work will continue after gsoc... 18:02
lizmat yes, of course... :-)
hoelzro good *, #perl6 18:05
lizmat hoelzro o/
hoelzro I'm working on making WHY is rw, and I'm having a bit of trouble with that 18:06
I'm guessing I have to return a Scalar wrapping the attribute I created in BOOTSTRAP 18:07
but what confuses me is I don't know how that attribute will be set when the container is assigned to
any pointers? 18:08
FROGGS BOOTSTRAP.nqp:1427 Parameter.HOW.add_method(Parameter, 'set_coercion', nqp::getstaticcode(sub ($self, $type) { 18:10
cant you just declare a sub that takes an optional second param? 18:11
and if given assigns it?
hoelzro so $param.WHY($new_why) instead of $param.WHY = $new_why?
FROGGS hmmm :/
hoelzro yeah, exactly =/ 18:12
jnthn If you're in BOOTSTRAP, and appropriately declared scalar_attr may do it... 18:14
hoelzro oh ho
I hadn't noticed that
jnthn I forget it you get an accessor
But can always write one :)
hoelzro ;)
thanks jnthn; I'll try that! 18:15
jnthn If $!foo is a Scalar then you just sub foo() irs rw { $!foo }
eek, that was a taxing typo...
hoelzro buh dum tssh
timotimo we should really get back to trying to make rakudo play nice with the ipython notebook 18:18
hoelzro timotimo++
timotimo you'd have to pre-increment me for this case
hoelzro ++timotimo 18:19
18:24 chenryn joined
dalek c: c24c97d | (Steve Mynott)++ | bin/p6doc:
very basic keyword search if index.data exists
18:24
18:25 nbrown left
timotimo wow, last commit to net-zmq was march *2013* 18:26
18:29 chenryn left
timotimo with moarvm the way it is nowadays, it should work well 18:30
18:31 anaeem1_ joined
FROGGS jnthn: it looks like I have to decont something in an AST structure... how can I dump a QAST structure in Perl 6 so I see containers that should not be there? 18:34
jnthn: or better... I'd like to patch nqp's QAST.dump 18:36
timotimo oof, i don't think .dump will give you that, but .DUMP might
FROGGS I can't DUMP a QAST tree 18:37
timotimo ah, damn
it seems like nqp-jvm is already through with its benchmarks 18:40
18:40 thou joined
timotimo and i've reached rakudo-jvm/2014.01 18:40
jnthn There's a DUMP subroutine iirc 18:41
FROGGS tries 18:42
jnthn: but is there a way to gain knowledge about containers in nqp?
jnthn Well, nqp::iscont is available
FROGGS ohh...
m: use QAST:from<NQP>; my $a = QAST::Op.new; say $a.dump; say nqp::iscont($a); 18:43
camelia rakudo-moar e036e2: OUTPUT«(signal )»
FROGGS m: use QAST:from<NQP>; my $a = QAST::Op.new; say nqp::iscont($a);
camelia rakudo-moar e036e2: OUTPUT«1␤»
FROGGS m: use QAST:from<NQP>; my $a := QAST::Op.new; say nqp::iscont($a);
camelia rakudo-moar e036e2: OUTPUT«0␤»
FROGGS \o/
m: use QAST:from<NQP>; my $a = QAST::Op.new; say $a.dump; 18:44
camelia rakudo-moar e036e2: OUTPUT«(signal )»
FROGGS m: use QAST:from<NQP>; my $a := QAST::Op.new; say $a.dump;
camelia rakudo-moar e036e2: OUTPUT«(signal )»
FROGGS weird
m: use QAST:from<NQP>; my $a := QAST::Op.new( :op<if> ); say $a.dump;
camelia rakudo-moar e036e2: OUTPUT«- QAST::Op(if)␤␤»
FROGGS ahh
18:44 thou left 18:45 FROGGS[mobile] left
timotimo probably tried to print a NULL that didn't end up as a VMNull? 18:45
FROGGS probably... but that's not worth a rakudobug me thinks :o)
jnthn Or a null string mroe likely
18:51 rurban joined
timotimo watching a talk about julia right now 18:53
it has things like code(...), code_lowered(...), code_llvm(...), and code_native(...) which dumps the code that a function turns into at different stages of the compilation pipeline 18:58
19:02 raiph left 19:03 raiph joined
timotimo julia accepts LaTeX-style \ sequences for unicode characters and the repl (and the ipython notebook) immediately convert it to the matching unicode symbol for you 19:03
19:03 dwarring joined 19:06 chenryn joined
timotimo our NativeCall seems nicer than julia's ccall 19:06
Pkg.add("foobar") compiles stuff it clones from github and then directly has it available ... or something like that 19:10
dalek rl6-bench: df6f6bb | (Geoffrey Broadwell)++ | analyze:
Show breakdown of history plot; improve history plot hover tips
timotimo japhb: how do you feel about adding "[Code]" links that point to github for the minibenchmarks? 19:11
japhb timotimo: Try `bench --format=html_plot history` again after that last commit. :-)
19:11 chenryn left
timotimo sadly, the actual filename that belongs to the minibenchmark is not directly visible in the microbenchmarks.pl :( 19:11
japhb As for code links, I thought that was already done (showing the source text) by someone else? 19:12
(I don't have it activated in history mode yet)
timotimo only for the microbenchmarks 19:13
dalek c: 8093e18 | (Steve Mynott)++ | / (2 files):
experimental -f support for methods if index.data exists
timotimo because there the source code i sactually part of the json file with the timings 19:14
japhb timotimo: Oh, I understand what you mean now. Yeah, that seems useful.
timotimo it would be fantastic if it could also factor in the commit id of the perl6-bench version used 19:15
since that's also already part of the json file :)
japhb I was thinking that very thing. :-)
Risks being a little off if you've got a -dirty commit, but if you're in that situation, you've got the source to look at locally. 19:16
timotimo we're obviously either on the same wavelength
or our wavelengths are a and b with a = n * b and n :: Int
19:19 MilkmanDan left
japhb gcd(a,b) == min(a,b) 19:20
19:20 MilkmanDan joined
japhb timotimo: Can you throw up a current html_plot history with all of the many variants you timed? I'd like to see what that looks like, since I only have three lineages locally 19:22
19:23 cognome joined
psch i have a confuse. there's a test that only fails under the harness. 19:25
running prove manually passes just fine
the .t file doesn't have any skips or todos though 19:26
github.com/peschwa/rakudo/tree/rt82108 this branch fails in t/spec/integration/advent2010-day21.t in the second test
if i reorder or random the tests it still fails at rot13, not the second test 19:27
19:28 aoseki joined
psch (as in, it doesn't matter that the rot13 test is the second, it's the rot13 that somehow fails) 19:28
19:29 akaseki left 19:30 ariden__ joined 19:32 aoseki left 19:38 ventica left
timotimo japhb: it's not finished yet 19:40
(how beefy do you think my system is?)
japhb I figured you'd do JVM last (or separately) in order to have useful data sooner. 19:42
One of the design decisions I'm very happy with is separating out the timing program from the analysis program, and allowing the analyzer to read and combine arbitrary different timing files. That's been working well for me so far. For example, I keep timings for all of the Rakudo, NQP, and Perl 5 releases, and then just need to retime the NQP and Rakudo HEAD as you guys optimize, without having to redo all the old ones. 19:52
19:53 ventica joined
timotimo japhb: i *am* doing jvm last 19:54
but i don't want to put load on the machine in the middle of the run :)
19:58 anaeem1__ joined 20:00 anaeem1_ left 20:04 rurban left 20:06 rurban joined 20:07 chenryn joined 20:12 ventica left 20:16 denis_boyun joined
timotimo japhb: i'll probably just ctrl-c the java timings when this one finishes 20:18
japhb: how do you feel about a little date/time display in the output of perl6-bench? 20:19
20:19 colloid left 20:21 chenryn left 20:24 ariden__ is now known as Ariden 20:25 Ariden is now known as bakaseki, chenryn joined 20:26 ariden joined, rurban left 20:27 ariden left 20:28 thou joined 20:29 silug left, silug joined 20:33 thou left
psch hm, at least i can reproduce that test failure for advent2010-day21.t with upstream/nom... 20:35
20:35 ventica joined 20:37 chenryn left 20:45 pippo joined 20:46 takesako left 20:48 telex left
timotimo only three benchmarks to go until i can kill the timing run for the jvm 20:50
20:50 telex joined 20:55 takesako joined 20:58 ilbot3 left
timotimo japhb: i ctrl-c'd the process, i got my shell back, but it keeps testing! :o 20:58
20:58 ilbot3 joined
dwarring .tell Ven PDF::Grammar README has been improved, added some usage notes and examples. Thanks for feedback Ven++ 20:58
yoleaux dwarring: I'll pass your message to Ven.
timotimo when i just ./bench compare, i get a single line for the summary scores that reads thus: 21:02
SUMMARY SCORE 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0
100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0
FROGGS O.o 21:03
japhb timotimo: You mean you want a timestamp at the start of each test, so you can see how long it's been running? 21:07
FROGGS perl6-m -Ilib -e 'use v5; "a" =~ /a/;' 21:08
Not enough positional parameters passed; got 1 but expected 6
in method match at src/gen/m-CORE.setting:6292
japhb timotimo: Yeah, sometimes something gets backgrounded and not killed, and I'm not sure why. You should be able to just killall analyze or so.
FROGGS ^-- I've no idea how to solve that yet :o(
21:08 virtualsue left
jnthn 6? o.O 21:08
FROGGS yeah 21:09
timotimo t.h8.lv/p6bench/2014-08-02-long_comparison.html - this looks okay
FROGGS I have no idea what that could be
timotimo (except not)
japhb timotimo: Something seems very strange with that summary, clearly. I wonder what went wrong ....
21:09 user3 joined, virtualsue joined
timotimo t.h8.lv/p6bench/2014-08-02-long_history.html - this looks not so okay 21:09
japhb If you manually specify the compilers, does it work right?
timotimo want my timings/ ?
what do you mean "manually"?
oh 21:10
21:10 user3 left
timotimo it could be that there's one compiler for every test that has a FAIL 21:10
FROGGS jnthn: I guess it is the $patrx that gets invoked at Str.pm:594, but sadly I cannot DUMP it (I can also not dump its .signature)
japhb Oh! I know ... that probably meant you didn't have a single test that passed on *all* of the compilers you tested. Which I'm guessing is because of a mostly-empty timings file for JVM!
timotimo 2013.06, 2013.08, 2013.10 have all FAIL or SKIP 21:11
japhb Yeah, delete those, or don't include them if you list them all out on the command line. Then you should be in a much happier place.
Wow, comparing that many in comparison mode results in quite a mess .... 21:12
timotimo that's probably from not having --backends= 21:13
except if you | less -S
japhb Oh, I was looking at t.h8.lv/p6bench/2014-08-02-long_comparison.html, and noticing the graphs get smashed on the left by the legends
timotimo feel free to refresh 21:15
yes, that's right m)
wait whaaaat 21:16
japhb Looking at those perl5 plots, I suspect your computer went to low-speed mode during part of the tests.
timotimo why does nqp-jvm have a score of 3k here?
21:17 raiph left
japhb timotimo: I'm guessing while_empty_native, and I'm guessing because it's peak speed is 30x perl5's, which wouldn't surprise me if it managed to turn it into a tight machine language loop after a while. 21:18
That test may need to be turned off for being grossly unrepresentative of overall loop performance. 21:19
timotimo m)
probably
japhb Or excluded from summary scores, at least. 21:20
timotimo i feel like we shouldn't remove the start-up time from the comparisons
otherwise the jvm implementations will have wildly exaggerated scores :)
:P
want me to upload my raw timings for you to ... enjoy? :) 21:21
japhb Well ... JVM already specializes in very long running processes, so as long as users expect that, it's fair. But maybe present the summary with and without *-jvm included?
timotimo: Yeah, make a tarball, and I can fiddle with them next time I have some free cycles
21:29 ventica left 21:30 virtualsue left 21:31 anaeem1__ left 21:34 chenryn joined 21:36 BenGoldberg joined 21:39 spider-mario left
timotimo cool. 21:40
16 mb worth of timings %) 21:41
called timings_2014-08.tar.bz2
in the folder you already know about
it would be kinda cool if i could easily re-name a checkout throughout the whole system 21:42
including the timings made so far
21:42 xenoterracide joined
timotimo like "rename matser to what its actual commit id was and have a new master with the most current code" 21:42
21:45 gfldex left 21:46 chenryn left 21:52 pippo left
masak 'night, #perl6 21:52
timotimo i kind of wish i could provide a junction for the sub MAIN 21:53
./bench extract \& build \& time rakudo-moar/... nqp-moar/...
22:13 takesako left 22:17 thou joined 22:19 denis_boyun left 22:21 thou left
dalek ast: 357d2a9 | TimToady++ | S32-list/combinations.t:
just use eqv, not hyper eqv
22:26
22:28 kivutar left 22:30 takesako joined
dalek ast: dce5eab | TimToady++ | S32-list/combinations.t:
also test combinations function
22:36
ast: b66728f | TimToady++ | S32-list/permutations.t:
add permutations.t
kudo/nom: 32549fc | TimToady++ | t/spectest.data:
test S32-list/permutations.t
22:37
lizmat Files=908, Tests=31957, 197 wallclock secs ( 8.53 usr 3.93 sys + 1217.31 cusr 166.06 csys = 1395.83 CPU) # below 1400!!, only yesterday first time below 1500 CPU seconds 22:38
also, the first time below 200 wallclock!
jnthn much wow 22:40
I just landed a hopefully-transparent-but-touching-something-scary patch in Moar. Testing welcome. 22:41
lizmat too scary to just bump MOAR_REVISION / NQP_REVISION ? 22:43
22:43 chenryn joined
jnthn Well, I'd like at least one other person to give it a spin :) 22:44
TimToady okay 22:45
jnthn The basic idea is to try and avoid deserializing *everything* up front 22:46
lizmat perl Configure.pl --gen-moar=master --gen-nqp=master --backends=moar # would do the trick ? 22:48
jnthn Think so
lizmat will try in a min
spectesting some removal of dead code in ModuleLoader.nqp
jnthn nice :)
TimToady you definitely need a make clean of some sort :)
parse seems about 10 seconds slower 22:50
tests seem to be working though
jnthn o.O
That's bizzare given (a) it's the same here, and (b) I can't see how this woulda had much influence on parse 22:51
(same here as in, my parse is what it was before this)
TimToady might be heat slowdown 22:52
dalek kudo/nom: 22b0fec | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp:
Remove dead code

Since we have CompUnitRepo objects living in @*INC, I don't see how this could ever work. Removal does not seem to break anything at all in spectesting.
lizmat re heat slow down: that last fastest spectest was on a machine that hadn't done anything for several hours
TimToady heat builds up in a few seconds in a laptop 22:53
and I'm in the warmest room of the house 22:54
lizmat
.oO( maybe switch off the laptop :-)
jnthn
.oO( Winter is coming... :) )
22:55
TimToady I could put it in the freezer
22:57 chenryn left
TimToady only failed one test, t/spec/integration/advent2010-day21.t, but I was failing that before 22:58
raydiak wonders how accurate any performance comparison could be without disabling speedstep, turbocore, etc 22:59
23:01 dmol left
timotimo there was a suggestion to fix the cpu to the lowest clock rate it'd support 23:01
which does seem like a helpful idea
no way i'd wait tat long for benchmarks, though :)
lizmat Files=909, Tests=31960, 204 wallclock secs ( 8.96 usr 3.92 sys + 1278.00 cusr 160.26 csys = 1451.14 CPU)
jnthn: so no spectacular speed gains
but it seems to pass all tests
jnthn lizmat: tbh, I wasn't expecting any yet 23:02
timotimo excellent
jnthn lizmat: We save about 2.5MB off base memory
lizmat that *is* useful :-)
jnthn lizmat: But nothing is really done to expect we might be able to exploit lazy deserialization.
timotimo jnthn: how can i help get rid of the "touchyness"?
jnthn timotimo: One thing to try is static lex value vivification
timotimo is there some way to visualize what frames or ... things ... cause any given object to be deserialized fro the first time?
lizmat so, bump on MOAR_REVISION / NQP_REVISION seems in order ? 23:03
timotimo that'd probably cause a whole bunch less frames to be touched, yes?
jnthn Well
timotimo but i thought having static lex values somewhere else was already a thing we had for a few hours?
jnthn Yes, we do put off deserializing them 23:04
But we do it on first touch
TimToady yeah, it's cranking my core hz up and down
jnthn Uh, first invocation
gah, lemme try this again
Right now, when we invoke a frame for the first time, we go and grab all of the static lexical wvals
However, we might not actually need all of them 23:05
lue Quick question: \n in strings is whatever the OS thinks a newline is, right? S02:4136 says it's just a LINE FEED
synopsebot Link: perlcabal.org/syn/S02.html#line_4136
jnthn lue: In what context? 23:06
lue e.g. say "Hello world!\n"
jnthn I think in a regex it's treated logically
I think in that case it's treated literally
(in a string)
TimToady well, on windows you have text files processing that to \r\n on the boundary
lue So on windows say "Hello world!\n" would end up being weird because I didn't put a \r too? 23:07
timotimo aye, in a regex it is indeed treated logically
TimToady and on ancient Mac \r and \n are swapped
timotimo oh, they don't have that any more?
TimToady lue: should be fine
lue timotimo: not since OSX switched to a Unix-like :)
BenGoldberg Mac OS X is a linux variant, no?
TimToady bsd/mach 23:08
timotimo no
BSD
jnthn lue: It'll only be weird if you use some odd program that can't handle \n
timotimo jnthn: would we be putting a c-level null into lexicals that are to be wval'd and then in the wval op we check for a null and deserialize if we see one?
TimToady or set your output to binary
jnthn Like, uh, NotePad
lue yeah, I was under the impression that \n in strings translated to your system's idea of a new line indicator.
jnthn timotimo: Note there's no wval op
timotimo oh
jnthn timotimo: But yes, the idea is put a null in the slot
TimToady lue: it does, on windows, for text files
jnthn And then spot the null and go deserialize.
timotimo well, there *is* a wval op and a wval_wide op :P 23:09
jnthn Right
timotimo oh, would the check perhaps land in getlex?
jnthn Well, vivify_lexical iirc
lue TimToady: but not console output, or internally-used strings, right?
BenGoldberg wonders if there is some OS out there which uses chars other than CR or LF or CRLF for newline.
timotimo that's an op that we'd have to codegen?
jnthn No 23:10
TimToady filehandles default to text, even on the console
jnthn Best is to read the patches I did a day or so ago in the area.
timotimo oh!
lue BenGoldberg: I imagine some OS out there uses NEL :)
BenGoldberg That's logical ;) 23:11
jnthn But it's basically a case of not looking up the wval in the frame finish deserialize thingy, but instead putting in a NULL there, and then doing the fetch of the wval the first time it's needed in vivify instead, and installing it then into the static_env for the future.
timotimo ah, i think i see the code you mean 23:12
TimToady jnthn: anyway, I think your patch looks good
jnthn timotimo: Should be around a 10 line patch, at a guess... 23:13
timotimo the piece that for's over the slvs count and MVM_ASSIGN_REF's the sc_get_obj into the body's static_env
jnthn TimToady: Thanks. Hopefully we can take advantage of it some more.
timotimo: Right, it's the sc_get_obj we want to putt of until later :)
The other thing - which I'll have a crack at tomorrow - is I think we can leave ->HOW on the STable NULL in initial deserialization. 23:14
TimToady t/spec/integration/advent2010-day21.t doesn't fail when I run it by itself, huh...
timotimo yup
lizmat TimToady: I see that with various test files all the time
jnthn Which *in theory* we might be able to get away with deserializing the meat-objects if we don't go doing introspecting stuff... 23:15
timotimo in that case i don't have to MVM_ASSIGN_REF, because it's not a gc'd thing i'm putting in there?
jnthn *meta
timotimo just a regular C-level null pointer into the .o?
jnthn timotimo: I *think* the memory is zeroed too
timotimo i'll check
jnthn timotimo: If not just calloc it so it is
That's cheaper than a loop and NULLing all the slots... :)
timotimo ah, yes, calloc
jnthn OK, cool
You'll need to MVM_ASSIGN_REF it into the slot in vivify 23:16
timotimo yes 23:17
assign ref is the thing that handles write barriers for going from nursery to gen1 and so forth?
jnthn Right
timotimo would fully_deserialized need to be adjusted in this case? 23:18
jnthn No
That's talking about whether we've enough in place to execute the frame. 23:19
timotimo OK 23:20
last thing (?), where would i store the two values to find the object in the sc by?
jnthn Oh, you get them from the same place they come from today
timotimo ah, so i go to the static_info and into the bytecode field?
it seems like a nontrivial calculation to find the offset where the lex vivification value array lives 23:21
jnthn Yeah, it is a bit... 23:22
I mean, you can find it through sf->body.frame_data_pos
I'd write something in bytecode.c that does it that way for now.
timotimo ah, hadn't seen it
jnthn Remember it's only going to happen the first time we ever need to get hold of that value.
MVM_bytecode_finish_frame does that kinda calc 23:23
It's just it pays attention to everything
timotimo add a little function to bytecode.c that extracts the two integers for a given lexical for you?
jnthn Yes
timotimo will do
jnthn If you look in deserialize_frame you'll see skipping code you can steal 23:24
Towards the end.
timotimo thanks
jnthn Happy hacking
I'm off for the night
o/
timotimo oh
would i be wanting the cu for anything there?
only for the bytecode version if at all, right? 23:25
jnthn yeah, you'll want it for that
You can toss the ensure_can_read calls though
Because if we made it this far we know we can.
'night
timotimo thought so 23:26
lizmat gnigh jnthn 23:29
23:33 nbrown joined 23:47 iarna joined
timotimo it seems like the bytecode version gets set to 2 somewhere along the way 23:52
causing the number of slvs to be expected to go down to 0
oh, that's because of the stage1, duh 23:53
dalek kudo/nom: a6e278d | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp:
Alas, this code is needed still

To correctly identify which directories were searched if a compunit load fails.
This reverts commit 22b0fec24548dcfd9b22231629637d4d3dc96158.
23:54 chenryn joined
lizmat feels like gen-cat.nqp has a buffering issue: 23:55
m src/core/Nil.pm src/core/Range.pm src/core/ListIter.pm src/core/MapIter.pm src/core/GatherIter.pm src/core/List.pm src/core/LoL.pm src/core/Ar
The following step can take a long time, please be patient.
the list of modules it's concatting is sometimes incomplete 23:56
timotimo it's not working yet and i'll go to bed and won't be at the computer tomorrow until somewhat late 23:59