»ö« 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. |
|||
timotimo | we may beat perl5 at imaginary numbers, too. but i'm not sure about that, i don't think we have any benchmarks focusing on that | 00:00 | |
we do have a mandelbrot benchmark | |||
ab5tract | i heard about that one. solid vindication of Perl 6's approach to typing imo | ||
timotimo | but that may be weighed down a lot by our lack of the list refactor | ||
ab5tract | lack of the list refactor? | 00:01 | |
00:02
immortal joined,
immortal left,
immortal joined
|
|||
timotimo | aye | 00:02 | |
you know how perl6 has lazy lists | |||
00:02
bjz left,
erkan left,
raiph left
|
|||
ab5tract | yup | 00:02 | |
timotimo | we currently pay the price of lazyness even if we could eagerly evaluate stuff | 00:03 | |
so what we end up doing quite often is jumping back and forth between the loop and the generating code | |||
even though we could generate all of the data in one go or at least build big batches | 00:04 | ||
ab5tract | ah | ||
timotimo | the list refactor is going to install a way to signal an eagerness intent to the generating code or iterator or something | ||
00:04
BenGoldberg left
|
|||
ab5tract | interesting | 00:05 | |
timotimo | oh, yikes, rakudo-moar has a little performance regression :( | 00:06 | |
t.h8.lv/p6bench/2014-09-09-latest_d...ments.html - we quite obviously still have a bit of work in front of us %) | 00:10 | ||
(but this doesn't include moar-jit at all) | |||
t.h8.lv/p6bench/2014-09-09-rakudo_history.html - only rakudo-moar, so that it doesn't look like a total flat-line ... | 00:12 | ||
while_push and while_push_join seem to have really tanked hard | |||
and for_push, too | |||
ab5tract | nqp-moar is above perl5 in several tests | 00:13 | |
that's impressive | |||
timotimo | well, crap. we've lost the for range -> while loop optimization *again* | 00:14 | |
ab5tract | :( | 00:15 | |
timotimo | that'd explain the tank in the for-related benchmarks | ||
ab5tract | i've gotta go | ||
sleep time :) | |||
timotimo | lol. look at array_set_xx | ||
jnthn: in t.h8.lv/p6bench/2014-09-09-rakudo_history.html we can see a whole range of benchmarks *really* tanking hard :( | 00:16 | ||
ab5tract | postwhile_nil_native is looking very nice too | 00:17 | |
okay, ciao for now #perl6 o/ | |||
00:17
ab5tract left
|
|||
timotimo | jnthn: also, this is the comparison instead of history view: t.h8.lv/p6bench/2014-09-09-rakudo_compare.html | 00:19 | |
i guess i look kind of foolish now, having just claimed we've been making great performance progress and then these benchmark numbers pop up %) | 00:21 | ||
but i'm sure all of this will be fixed within the week. | |||
00:30
xenoterracide joined
00:32
chenryn left
00:34
chenryn joined,
chenryn left
00:37
BenGoldberg joined
00:39
erts joined
00:40
erts left,
raiph joined,
raiph left
00:41
colomon left
00:42
colomon joined
00:56
eternaleye left
00:59
dayangkun joined
01:02
Px12 left
01:11
nbrown__ joined
01:12
xenoterracide left
01:15
leont left
01:20
xenoterracide joined
01:26
xinming joined
01:28
eternaleye joined
01:31
telex left
01:32
telex joined
01:33
FROGGS_ joined
|
|||
dalek | ecs: df6da87 | (L. Grondin)++ | S99-glossary.pod: fixing syntax links line 385 |
01:33 | |
01:36
FROGGS left
01:44
Psyche^ left
01:45
Psyche^ joined
01:55
eternaleye left
01:57
tinyblak joined
|
|||
dalek | ecs: bb60fb2 | (L. Grondin)++ | S99-glossary.pod: wiktionary link for TL;DF |
01:58 | |
02:01
chenryn joined
|
|||
dalek | ecs: 46f8aa5 | (L. Grondin)++ | S99-glossary.pod: WP link to AST |
02:11 | |
02:15
xenoterracide left
|
|||
dalek | ecs: 94ec630 | (L. Grondin)++ | S99-glossary.pod: rephrasing class + OOP |
02:20 | |
02:21
xenoterracide joined
|
|||
dalek | ecs: 7189c68 | (L. Grondin)++ | S99-glossary.pod: missing article |
02:22 | |
colomon | timotimo: seems like it might be worthwhile picking one of the really bad declines and bisecting it…. | 02:26 | |
02:26
xenoterracide left
|
|||
dalek | ecs: 2d18734 | (L. Grondin)++ | S99-glossary.pod: DWIM entry |
02:26 | |
hoelzro | I was just looking at S28; why is it input-line-separator but output_field_separator? | 02:27 | |
why the difference between - and _? | |||
sjn | pointless inconsistencies ftl | 02:28 | |
dalek | ecs: f35e64f | (L. Grondin)++ | S99-glossary.pod: epic fail |
02:32 | |
02:32
eternaleye joined,
slavik left,
xenoterracide joined
|
|||
dalek | ecs: 7fe4182 | (L. Grondin)++ | S99-glossary.pod: filling EVAL |
02:35 | |
[Coke] | I think in general we prefer -'s where we can. | ||
rjbs | ++ to that | ||
BenGoldberg | Just to be different from perl5? ;) | ||
rjbs | _'s stink. | ||
They're harder to type and to read. | |||
[Coke] | hoelzro: +1 from me to fix output_f.. | 02:38 | |
hoelzro | that's all I need =) | 02:39 | |
what about $*MOST_RECENT_CAPTURED_MATCH? | 02:40 | ||
(...is that even impl'd?) | |||
dalek | ecs: eae404d | (L. Grondin)++ | S99-glossary.pod: rephrasing FIFO |
||
ecs: 616a6ad | (Rob Hoelz)++ | S28-special-names.pod: Change _ to - in lower case special var names Well, they're fields on $*OUT, but close enough |
02:41 | ||
02:43
nbrown__ left
|
|||
dalek | ecs: fc7aeb0 | (L. Grondin)++ | S99-glossary.pod: missing plural and period |
02:43 | |
ecs: 0901c85 | (L. Grondin)++ | S28-special-names.pod: Merge branch 'master' of github.com:perl6/specs |
|||
02:43
kurahaupo left
|
|||
hoelzro | tadzik: can I haz commit bit for panda? | 02:43 | |
02:44
joescript left
02:45
jlaire left,
slavik joined
02:46
jlaire joined
02:47
xenoterracide left
|
|||
dalek | ecs: 1a7b77e | (L. Grondin)++ | S99-glossary.pod: elaborate JIT |
02:48 | |
02:49
nbrown__ joined
|
|||
dalek | ecs: e6df49e | (L. Grondin)++ | S99-glossary.pod: elaborate on KISS |
02:52 | |
ecs: 92bdaf2 | (L. Grondin)++ | S99-glossary.pod: fix typo |
02:53 | ||
02:54
nbrown__ left
02:55
noganex_ joined
|
|||
hoelzro | I'm working on a Test::Tester for Perl 6, and I'm stuck on tracking the test count | 02:55 | |
because if I do something like this: test({ pass 'sure' }).ok; | |||
that pass that I'm testing will affect the test number sequence that's output to be parsed by prove or another TAP parser | 02:56 | ||
and I don't know what the best way to get around that would be | |||
I could expose the test counter in Test.pm for rw, so that testing utility authors could mess with it...but that seems dangerous | 02:57 | ||
02:58
noganex left
|
|||
dalek | ecs: c7f125b | (L. Grondin)++ | S99-glossary.pod: relate FIFO and LIFO together |
02:58 | |
03:01
dayangkun left
|
|||
dalek | ecs: 667ad8a | (L. Grondin)++ | S99-glossary.pod: move a few entries in the O section for lexicographic ordering |
03:03 | |
03:05
rindolf joined
|
|||
dalek | kudo/nom: 705e7b8 | (Rob Hoelz)++ | lib/Test.pm: Test.pm - Allow output handles to be queried and modified |
03:07 | |
03:14
dayangkun joined
03:16
xenoterracide joined
03:27
kurahaupo joined
03:32
Akagi201_ joined
03:35
dayangkun left
03:36
xragnar_ joined,
xragnar left,
xragnar_ is now known as xragnar,
ggherdov_ joined,
huf_ joined
03:37
flussenc1 joined
03:38
xenoterracide left,
rindolf left,
tinyblak left,
colomon left,
jerrycheung left,
muraiki left,
TimToady left,
Rounin left,
breinbaas left,
MilkmanDan left,
jdv79 left
03:39
sorear_ joined,
vike1 joined,
grep0r_ joined
03:40
mtj_ joined,
flussence left,
vike left,
ivanshmakov left,
grep0r left,
Akagi201 left,
DarthGandalf left,
sorear left,
ggherdov left,
mtj_- left,
oetiker left,
huf left
03:41
oetiker joined,
rindolf joined
03:42
DarthGandalf joined,
xenoterracide joined,
tinyblak joined,
colomon joined,
jerrycheung joined,
muraiki joined,
TimToady joined,
Rounin joined,
breinbaas joined,
MilkmanDan joined,
jdv79 joined
03:46
ggherdov_ is now known as ggherdov
03:58
flussenc1 is now known as flussence,
flussence left,
flussence joined
|
|||
danaj | I noticed that List.pm has combinations(n,0) return [], which makes sense given binomial(n,0) = 1. But permutations returns with no output for 0, while factorial(0) = 1. Is that intended? | 04:02 | |
Also combinations($n,$m) doesn't have Int type for arguments, while there is permutations(Int $n). Intended? It allows odd things like combinations(5,3.2) though <a b c>.combinations(1.2) is not allowed. | 04:06 | ||
Lastly, do we care about the performance (as in, would anyone be interested in a 60% speedup)? | 04:11 | ||
04:17
anaeem1 joined
|
|||
grondilu | m: say permutations(3, 0).perl | 04:21 | |
camelia | rakudo-moar 705e7b: OUTPUT«===SORRY!=== Error while compiling /tmp/hdTo27MC8eCalling 'permutations' will never work with argument types (Int, Int) Expected: :(Int $n)at /tmp/hdTo27MC8e:1------> say ⏏permutations(3, 0).perl» | ||
grondilu | m: say permutations(3).perl | ||
camelia | rakudo-moar 705e7b: OUTPUT«([0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]).list» | ||
grondilu | m: say permutations(0).perl | 04:22 | |
camelia | rakudo-moar 705e7b: OUTPUT«().list» | ||
grondilu | permutations does return an output: the empty list. | ||
danaj | m: .say for permutations(0) | 04:23 | |
camelia | ( no output ) | ||
danaj | m: .say for permutations(1) | ||
camelia | rakudo-moar 705e7b: OUTPUT«0» | ||
danaj | m: .say for combinations(0,0) | ||
camelia | rakudo-moar 705e7b: OUTPUT«» | ||
danaj | permutations(0) doesn't return the empty list | 04:24 | |
grondilu | IC | ||
danaj | at least not in the way that combinations(0) does | ||
grondilu | TimToady implemented those. Better ask him. | 04:25 | |
I tend to believe there should be an Int type check in combinations as well, though. | 04:27 | ||
m: .say for combinations(5, 3), combinations(5, 3.5); | |||
camelia | rakudo-moar 705e7b: OUTPUT«0 1 20 1 30 1 40 2 30 2 40 3 41 2 31 2 41 3 42 3 4» | ||
grondilu | because combinations(5, 3.5) is just weird. | 04:28 | |
as far as performance is concerned, it's always welcome :) | 04:29 | ||
04:30
chenryn left
|
|||
grondilu | but your code needs to be CORE.setting friendly. | 04:30 | |
may I suggest you post your code on rosettacode.org/wiki/Permutations#Perl_6 ? | 04:32 | ||
danaj | I can do that. It's lexigraphic order and iterating, and just as short, but very C-like so not pretty. | 04:33 | |
04:33
tinyblak left
|
|||
danaj | It's still 50x slower than the same thing in Perl 5. :( | 04:34 | |
grondilu | TimToady or someone else may be able to optimize it for nqp and then it could be faster. | 04:35 | |
danaj | It's much faster in XS+multicall, so yes. Alternately we just wait until P6 gets some improvements. | 04:36 | |
grondilu | would your code happen to be possibly modified to return the signature of each permtaitons as well? I've been wanting something like that lately? | ||
04:38
hagiri joined
|
|||
danaj | I'm not sure. My experience with XS in P5 makes me thing even a naive calculation in C will get washed away in the noise of the return back to Perl. | 04:38 | |
hagiri | TimToady, | ||
=) | |||
danaj | Hmm, I'm thinking of replacing the RC combinations code -- it's super slow. | 04:48 | |
Actually, I'll leave it as a recursive example. Besides, I hate removing examples. | 04:49 | ||
04:54
BenGoldberg left
|
|||
danaj | Edited. It is .... not really P6ish. | 04:55 | |
(admittedly I wrote it in C, then wrote a P5 version, then shoved it into P6 while angels wept) | |||
05:00
chenryn joined
|
|||
danaj | Re loop, thanks. There are lots of ways to structure it, e.g. change to while ($i >= 0) and wrap the last two loop lines in an if. It didn't seem clearer to me, but it gets rid of the 'last' and makes the exit condition part of the outside loop. | 05:03 | |
05:05
chenryn left,
dayangkun_ joined
|
|||
grondilu | you can consider making the edit on your local fork of rakudo and see if it passes combinations.t | 05:05 | |
(t/spec/S32-list/combinations.t that is) | 05:06 | ||
05:08
hagiri left
|
|||
grondilu does it | 05:08 | ||
danaj | I was doing for $n ^16, for $k ^($n+1), stringify combinations and mycombinations, die if not equal. Better would be to test vs. something else. | ||
grondilu | we have t/spec/S32-list/combinations.t for tests | 05:10 | |
grondilu realizes there are only 6 lines in this test though. | 05:11 | ||
danaj | That's what I meant... Still good to run it. | 05:12 | |
Ah, I have to make t/spec. I cloned it by hand because it wasn't in standard rakudo | |||
kurahaupo contemplates implementing .permutations.count & .combinations.count for non-integral values using the Γ function in place of | |||
grondilu | kurahaupo: I think what you want is multi permutations(Real $n, :$count!) {...} | 05:14 | |
05:15
kaare_ joined
|
|||
grondilu | also, that would probably be overkill unless it is decided to put Γ in the core. | 05:15 | |
we do have a nice implementation on RC, though. So it would not be hard to add it. | 05:16 | ||
danaj | I was ready after YAPC to do a ntheory module for P6, but then went straight to vacation, then work, .... I've got a giant pile of tuits next to me, but can't get motivation. | 05:17 | |
05:17
araujo left
05:18
yeahnoob joined
05:20
araujo joined
|
|||
danaj | For what it is worth, it passes the little S32-list/combinations.t test (and I verified it's running that code by changing +1 to +2 in last line and watching it fail most of the tests). | 05:21 | |
grondilu | does it? I tried and it failed. | 05:24 | |
you have the latest rakudo? | 05:25 | ||
danaj | Aug 31 | ||
Which test? | 05:27 | ||
grondilu | all of them. | ||
m: say ((1,), (2,), (3,)).list eqv (1; 2; 3).list; | |||
camelia | rakudo-moar 705e7b: OUTPUT«False» | ||
grondilu | what do you locally with this ^? | 05:28 | |
you get* | |||
danaj | False | ||
grondilu | :\ | ||
wth | |||
05:28
SamuraiJack_ joined,
jack_rabbit left
|
|||
TimToady | m: say ($(1,), $(2,), $(3,)).list eqv (1; 2; 3).list | 05:29 | |
05:29
kaleem joined
|
|||
camelia | rakudo-moar 705e7b: OUTPUT«False» | 05:29 | |
TimToady | m: say ($(1,), $(2,), $(3,)).list.WHAT | 05:30 | |
camelia | rakudo-moar 705e7b: OUTPUT«(List)» | ||
TimToady | m: say (1; 2; 3).list.WHAT | ||
camelia | rakudo-moar 705e7b: OUTPUT«(LoL)» | ||
grondilu | there's been a push on lib/Test.pm lately. I'll pull it and try again. | ||
TimToady | a List and a LoL are never going to compare eqv | 05:31 | |
grondilu | that's what is done in combinations.t | 05:32 | |
oh wait no | |||
m: say ((1,), (2,), (3,)).list eqv (1; 2; 3).tree.map(*.sort).tree; | 05:33 | ||
camelia | rakudo-moar 705e7b: OUTPUT«False» | ||
grondilu | danaj: what do you get with that^ ? | 05:34 | |
danaj | Also false with perl6-m | ||
grondilu | well I don't get it. | ||
05:35
chenryn joined
|
|||
grondilu | m: say ((1,), (2,), (3,)).list eqv [1, 2, 3].combinations(1).tree.map(*.sort).tree; | 05:35 | |
camelia | rakudo-moar 705e7b: OUTPUT«False» | ||
grondilu checks out and recompiles | 05:37 | ||
grondilu is planning on running perl6 t/spec/S32-list/combinations.t and expects failure | |||
danaj | I'm cloning into a new tree and making fresh with just the one change to src/core/List.pm. | 05:38 | |
05:39
xenoterracide left
|
|||
grondilu | so here we go. I have the latest rakudo on moarvm, and t/spec/S32-list/combinations.t fails. | 05:43 | |
no because of combinations, but most likely because of the way combinations.t is written. | |||
oh hang on, my t/spec/ is not up to day. I had forgotten it's a separate repo. | 05:44 | ||
sorry guys :P | 05:45 | ||
05:45
dayangkun_ left
|
|||
danaj | I jsut did a completely fresh checkout and build and it works for me with and without my combination change. | 05:46 | |
grondilu | my version was pretty old | ||
danaj | I have also only tested with Moar. | 05:47 | |
05:47
dayangkun joined,
mr-foobar joined
|
|||
grondilu | I bet it should be fine. I suggest you submit a pull request. | 05:47 | |
danaj | (I would hope the others would still be correct, but performance might be different) | ||
grondilu | C-like code should run fine on all VM. | 05:49 | |
yeahnoob | Is "LoL" = "List of List" ? | ||
grondilu | it is | ||
yeahnoob | Ola | ||
05:49
ilbot3 left
|
|||
danaj | Any thoughts on permutations(0)? S32-list/permutations.t tests even less than combinations. | 05:50 | |
dalek | ecs: f41d703 | (L. Grondin)++ | S99-glossary.pod: adding LoL |
05:51 | |
grondilu | danaj: it's a degenerate case so it's not easy to assert, frankly. | 05:52 | |
danaj | I got distracted today and looked at this. I should be working on the is-prime stuff I still have to finish, since it's been lingering for 1.5 years now. | ||
grondilu thinks someone should right a whole synopsis about degenerate cases | |||
*write | |||
grondilu is done recompiling with danaj's combinations | 05:54 | ||
grondilu confirms it passes tests on MoarVM | |||
05:57
ilbot3 joined,
[Sno] left
|
|||
danaj | I was looking at performance with something like: my $s = 0; $s++ for combinations(22,6); say $s; | 05:57 | |
That example takes < 0.02s with Perl5+XS, ~0.05s in Perl5. ~6.6s for perl6-m. Original List.pm code takes ~11.1s. | 06:01 | ||
grondilu | you need more difficult tests | ||
oh hang on. 6.6s on perl6-m is difficult enough I guess | |||
m: say [*] (22, 21 ... *) Z/ 1.. 6 | 06:03 | ||
camelia | rakudo-moar 705e7b: OUTPUT«74613» | ||
grondilu | m: say [*] (22, 21 ... *) Z/ 1.. 10 | ||
camelia | rakudo-moar 705e7b: OUTPUT«646646» | ||
grondilu | try with combinations(22, 10) | ||
should take about ten times longer | |||
06:05
denis_boyun_ joined
|
|||
danaj | 0.1s Perl5+XS (using multicall, and could be faster), 0.4s P5, 82s perl6-m new code | 06:05 | |
grondilu | not related: | ||
m: role Foo {}; say $_ ~~ Foo for pi but Foo, [pi] but Foo; | |||
camelia | rakudo-moar 705e7b: OUTPUT«TrueFalse» | ||
grondilu | n: role Foo {}; say $_ ~~ Foo for pi but Foo, [pi] but Foo; | ||
camelia | niecza v24-109-g48a8de3: OUTPUT«TrueTrue» | ||
TimToady | does 'for eager combinations' run any faster? | 06:06 | |
danaj | TimToady: A little, yes. | ||
TimToady | that *probably* indicates it will run considerably faster after the list refactor | 06:07 | |
danaj | Memory use is also something for the long term consideration. It uses a lot of memory currently, but maybe that is my calling method, or maybe just to-do things. | ||
06:12
DrSeki is now known as All
06:13
All is now known as Guest69471,
Guest69471 is now known as Salai
|
|||
danaj | perl6-m: 82s new, 169.8s old. with eager: 58.0s new, 144.5 old. | 06:13 | |
grondilu | that's very decent | 06:14 | |
danaj++ | |||
TimToady | and all that's doing is just harvesting a bunch of takes in a row, not even trying to reduce the continuations or exceptions | ||
danaj | that's a bigger difference than I got with the small examples. This all is still predicated on it being correct (it seems to be). | 06:15 | |
TimToady | long run, eager ought to be able to do away with mos tof those | ||
or not even eager, but just batched, which lazy can do if there are no side effects | 06:16 | ||
(outside the iterator itself) | |||
danaj | "The Future" ~ " Looks Bright" | 06:18 | |
06:26
denis_boyun_ left
|
|||
danaj | On a side note, I hadn't realized just how bad LTM was at primality for tiny inputs. ".is-prime for 1..1000000" takes 2.7s on branch, 3min40s on master. It's unrelated to why I wanted to make the changes, but it doesn't hurt. Albeit the more one does in the loop vs. $s++, the smaller the delta. | 06:37 | |
06:38
mberends left
06:39
dayangkun left
|
|||
dalek | line-Perl5: 5198949 | nine++ | lib/Inline/Perl5.pm6: Fix leaking Perl 5 objects passed to Perl 6 code. Many thanks to jnthn++ for implementing DESTROY :) |
06:43 | |
06:45
ivanshmakov joined
|
|||
tadzik | hoelzro: I don't know, can you? :P | 06:45 | |
hoelzro: have some nice patches to push? | 06:46 | ||
dalek | line-Perl5: 1cd647f | nine++ | p5helper.c: Fix some leaks in callbacks name, obj, name_str, retval and args get freed correctly, but we're still leaking somewhere. But the leak seems to be too small to be an SV. |
06:50 | |
06:51
dayangkun joined
|
|||
timotimo | grondilu: thanks for fixing up the S99 pod syntax and all those entries! :) | 06:53 | |
grondilu | timotimo: you're welcome | ||
06:55
Isp-sec joined
|
|||
grondilu | there are still 139 unresolved internal links though | 06:56 | |
dalek | ecs: 20a1fd6 | (L. Grondin)++ | S99-glossary.pod: resolve link for JIT compiler |
06:58 | |
timotimo | mhhh | 07:01 | |
dalek | ecs: 29109b6 | (L. Grondin)++ | S99-glossary.pod: header for Zavolaj |
||
timotimo | perl6.org/compilers/features - has *still* not been updated | 07:04 | |
a whole bunch of changes have accreted by now | |||
dalek | ecs: 439a5b4 | (L. Grondin)++ | S99-glossary.pod: resolve Rosetta Code |
07:05 | |
timotimo | blog.chucklefish.org/?p=128 - chucklefish are like "yup, we'll build a game completely implemented in haskell using functional reactive programming. what are you gonna do about it?" | 07:08 | |
07:08
tinyblak joined
|
|||
moritz | timotimo: I've updated perl6.org/compilers/features | 07:09 | |
timotimo | thank you :) | ||
moritz | though I don't know why it won't update automatically | ||
12,42 * * * * sh ~/update-features.sh | |||
timotimo | environment trouble? | ||
moritz | there's nothing in the logs. | 07:10 | |
timotimo | if there's *nothing* in the logs, that doesn't bode well :) | 07:11 | |
07:11
zakharyas joined
|
|||
moritz | well, the logs have "Already up-to-date.", which is from "git pull" | 07:12 | |
I'm adding timestamps to the logs now | |||
timotimo | maybe an older run did the git pull and didn't correctly refresh the page? | ||
and afterwards the script said "oh, it's already up to date, so i don't have to do anything!" | |||
though that doesn't make sense, there have been multiple changes in the past | 07:13 | ||
moritz | the generation happens indepently of what the 'git pull' did | ||
timotimo | hm, ok | 07:14 | |
very strange indeed. | |||
07:14
FROGGS_ is now known as FROGGS
|
|||
timotimo | hum. my commit message read "did a small test across S99" | 07:16 | |
i meant to write "pass" | |||
oh well. | |||
07:18
tinyblak_ joined,
darutoko joined,
tinyblak left
|
|||
dalek | ecs: 33464ab | (L. Grondin)++ | S99-glossary.pod: resolve rakudo |
07:20 | |
ecs: e351af0 | (L. Grondin)++ | S99-glossary.pod: resolve native |
|||
ecs: 2cf454f | (L. Grondin)++ | S99-glossary.pod: resolve pseudo-scope |
07:21 | ||
ecs: 1fcf806 | (L. Grondin)++ | S99-glossary.pod: resolve bytecode |
|||
ecs: db86628 | (L. Grondin)++ | S99-glossary.pod: resolve expression & Just in Time |
|||
ecs: 528f7c0 | (L. Grondin)++ | S99-glossary.pod: less than 100 links to resolve now |
|||
07:21
virtualsue joined
|
|||
FROGGS | timotimo++ # blög | 07:22 | |
timotimo | thänk yöü :) | ||
07:23
tinyblak_ left,
kurahaupo left,
[Sno] joined
07:25
Salai left
|
|||
moritz | blög ürl? | 07:27 | |
timotimo | just the p6weekly.wordpress.com | ||
nothing special | |||
07:28
kurahaupo joined,
akaseki joined
|
|||
lizmat | disagree: keeping this up week after week *is* special | 07:31 | |
and good *, #perl6! | |||
nine | Good morning, lizmat. | ||
timotimo | oh well :3 | ||
nine | lizmat: my P5 destructors not called was indeed embarassing. Turns out, I simply forgot a parameter of p5_sv_refcnt_dec so it didn't do anything. And managed to put in the wrong variable after discovering that. But it works now :) | 07:33 | |
07:33
tinyblak joined
|
|||
lizmat | so I was right :-) not enough --ing :-) | 07:33 | |
FROGGS | ohh, yeah, morning o/ :o) | ||
moritz | timotimo++ | 07:36 | |
nine | lizmat: I still don't know why it was not called in pure Perl 5 { Foo->new; }; Luckily I don't have to care ;) | 07:37 | |
07:49
spider-mario joined,
spider-mario left
07:51
eiro left
07:55
spider-mario joined
07:56
eiro_ joined
07:57
donaldh joined
08:01
kaleem left
08:04
eiro_ left,
tinyblak left
|
|||
grondilu | std: stay | 08:16 | |
camelia | std 53b3ca6: OUTPUT«===SORRY!===Undeclared routine: 'stay' used at line 1Check failedFAILED 00:01 120m» | ||
grondilu | std: say | ||
camelia | std 53b3ca6: OUTPUT«===SORRY!===Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/ijhoS7UHF5 line 1:------> say⏏<EOL>Check failedFAILED 00:00 120m» | ||
08:17
kurahaupo left
|
|||
timotimo | jnthn: btw, my benchmarks of "master" were based on 11d7482548c8298809655d86b2651e8b56c4b8d4 | 08:18 | |
er, "nom" i mean. | |||
grondilu | ?? is that new? How can I just print a newline? print "\n" would be dull. | ||
timotimo | say() | 08:19 | |
grondilu | std: say() | ||
camelia | std 53b3ca6: OUTPUT«ok 00:00 121m» | ||
grondilu | oh, ok. | ||
lizmat | m: say() | ||
camelia | rakudo-moar 705e7b: OUTPUT«» | ||
08:20
dakkar joined
08:30
pochi left
08:31
dwarring left
08:36
spider-mario left
08:37
virtualsue left
08:39
donaldh left,
donaldh joined
08:40
Isp-sec left
08:43
bloonix left,
bloonix joined
08:45
Rotwang joined
|
|||
sergot | Could somebody answer here: #121947 ? :) | 08:45 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121947 | ||
nwc10 | rakudo startup only compettive/beating Moose on x86_64 (of platforms I've tested) | 08:46 | |
On Power, Moose is about 2/3rds of the time | |||
so be careful when bragging | |||
JIT *doesn't* seem to be the cause of speed | 08:47 | ||
08:48
spider-mario joined
08:49
spider-mario left
|
|||
moritz | the cause of speed is not doing unnecessary or stupid things | 08:50 | |
nwc10 | my suspicion is endian swaps in MoarVM | ||
but I don't have enough disparate platforms to test this | |||
08:52
spider-mario joined
09:06
jerrycheung left
09:07
chenryn left
09:10
bjz joined
|
|||
timotimo | nwc10: the jit would have a hard time speeding up start-up anyway | 09:11 | |
09:18
chenryn joined
09:25
yeahnoob left
09:26
yeahnoob joined
|
|||
FROGGS | TimToady: can you please answer to #121947? | 09:34 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121947 | ||
09:36
kurahaupo joined,
yeahnoob left
09:47
kaleem joined
09:50
leont joined
09:59
Px12 joined,
BizarreCake joined
10:01
virtualsue joined
10:04
[particle] left
10:05
[particle] joined
|
|||
masak | good time-of-day, #perl6 | 10:06 | |
nwc10 | masak: hoes does China cope with walkclocks being out of sync with the daystar in most of the country? How does it know what time of day it is? | 10:07 | |
10:17
denis_boyun_ joined
10:19
telex left
10:20
telex joined,
yeahnoob joined
|
|||
colomon | Huh. A batch of modules that had been failing started working, but were replaced by a new batch of failing modules. :\ host07.perl6.com:8080/report | 10:24 | |
FROGGS | v5 failed... that's very weird | 10:26 | |
timotimo | i'm doing a bit of bisection on the rakudo and the specified _REVISIONs | 10:27 | |
seems like b0e3d6d was already dog slow at rc-forest-fire-stringify | |||
and the Minsk tagged release is good. | 10:33 | ||
(always be sure to verify the good as well as the bad) | |||
masak | nwc10: Russia has nine time zones. too wide. but China is not as wide, and copes with but one. | ||
leont | How do I trap warnings in a background thread? «No exception handler located for warn» is highly uninformative :-/ | 10:34 | |
nwc10 | masak: but does that mean in different parts of the country, office hours are different wallclock times? | 10:35 | |
moritz | leont: iirc jnthn did something to catch them yesterday | ||
leont: that is, a rakudo patch | |||
commit 22a4c05712109cdb9704e2a84f5261806349fd54 | |||
Author: Jonathan Worthington [email@hidden.address] | |||
Date: Sun Sep 7 10:57:27 2014 +0300 | |||
Fix issues with reporting warnings on threads. | |||
leont: might help to upgrade your rakudo, if you haven't already | |||
leont | Ah, right. Was planning to upgrade any way, think lizmat++ also fixed an issue I had run into | ||
timotimo | oh wow | 10:36 | |
here i have a commit where rakudo takes 92 seconds for stage parse ... | |||
that's c3a6f67 | |||
leont | Is doing just a «rakudobrew build» the way to upgrade? | ||
colomon | huh, the other interesting thing about the smoke run last night was the fastest Stage parse I've ever seen, 26.336. Rest of this week it has been > 27, I believe | 10:37 | |
tadzik | leont: yes | ||
colomon | leont: yes | ||
moritz should start to use rakudobrew :-) | |||
tadzik | en.wikipedia.org/wiki/Jake_Weary :D | 10:39 | |
10:39
dayangkun left
|
|||
moritz | "Not to be confused with jQuery." | 10:40 | |
timotimo | oh, i know why stage parse was so super slow | ||
it was right in the middle of hoelzro's POD parsing re-work | |||
10:41
chenryn left,
anaeem1 left
|
|||
colomon | ebiquity.umbc.edu/blogger/2008/01/1...decidable/ | 10:42 | |
masak | ah, yes. a classic. | ||
Geoffry Pullum, isnät it_ | 10:43 | ||
isn't it?* | |||
nwc10: yes. in Xinjiang they start working at around 11:00. (source: kathyz) | 10:45 | ||
moritz | masak: correct, Pullum | 10:46 | |
masak likes Pullum | |||
everyone should take the time to read Pullum's rants about (a) Strunk & White, and (b) people who think various things are "passive voice". | |||
including (c) Strunk & White who think various things are "passive voice" :) | 10:47 | ||
10:47
virtualsue left
|
|||
grondilu | since * .. * means something now, would it be a big stretch to have * .. $n mean something too? | 10:51 | |
that would allow to golf rosettacode.org/wiki/Evaluate_binom...nts#Perl_6 a bit more | |||
lizmat | the other day, someone mentioned that classify doesn't create typed hashes | ||
that is correct, but you can: | |||
grondilu | like: sub infix:<choose> { [*] * .. $^n Z/ 1 .. $^p } | 10:52 | |
10:52
chenryn joined
|
|||
lizmat | m: my %h{Any}; %h.classify-list($test, @List to classify ) | 10:52 | |
camelia | rakudo-moar 705e7b: OUTPUT«===SORRY!=== Error while compiling /tmp/Rc8Q3S1QXaVariable '$test' is not declaredat /tmp/Rc8Q3S1QXa:1------> my %h{Any}; %h.classify-list($test⏏, @List to classify ) expecting any of: postfix» | ||
timotimo | how do you expect to multiply up * .. $^n ?? | ||
lizmat | my %h{Any}; %h.classify-list($test, @List to classify ) # pseudo code | ||
timotimo | start at -Inf and increment until you reach $n? | ||
grondilu | oh yeah we have to start from the left. Forgot that. | 10:53 | |
lizmat | m: my %h = a => 1; %h<a> = [ %h<a>, 2 ]; say %h.perl # is this guaranteed to keep working ? | 10:55 | |
camelia | rakudo-moar 705e7b: OUTPUT«("a" => [1, 2]).hash» | ||
lizmat | the reason I'm asking, is that Hash.push is using an intermediary, when it feels that is not necessary | 10:56 | |
timotimo | oh my. seems like mister toady could be to blame for the performance regression; at least for the one in rc-forest-fire-stringify | 10:58 | |
10:58
tinita joined
|
|||
timotimo | (which got 17x slower) | 10:58 | |
lizmat | is that the one with the candidate removal ? | ||
tinita: welcome to #perl6! | 10:59 | ||
tinita | \o/ | ||
timotimo | i'll give you the commit id in just a moment | ||
i'll just wait for the timing to officially terminate | 11:00 | ||
oh, git wants me to test one more revision | |||
dalek | kudo/nom: 617176f | (Elizabeth Mattijsen)++ | src/core/io_operators.pm: Some code esthetics |
11:02 | |
kudo/nom: fcdf308 | (Elizabeth Mattijsen)++ | src/core/Hash.pm: Remove unnecessary temporary from Hash.push |
|||
timotimo | ce0c258640222761ab8176aff92cf9bbe5b3665f is the first bad commit | ||
Reify lists with correct count. | |||
github.com/rakudo/rakudo/commit/ce...bbe5b3665f | |||
FROGGS | weird | 11:03 | |
timotimo | i only tested that one benchmark, though | ||
FROGGS | and that can make things 17 times slower? that seems odd | ||
lizmat | perhaps $count is Inf in some cases ? | ||
(or something close to it) | |||
timotimo | github.com/japhb/perl6-bench/blob/...-stringify - this is the benchmark i've tested it with | ||
i'll build that revision and the one before it and run the complete benchmark suite with those. | 11:04 | ||
FROGGS | timotimo++ | ||
damn, setting up a osx box failed again :o( | 11:05 | ||
timotimo | ;( | 11:06 | |
11:09
virtualsue joined
|
|||
timotimo | huh. rebootstrap.pl is ... hanging? | 11:11 | |
tadzik | huh | ||
timotimo | with almost no cpu usage, too | ||
trying with an older commit now | 11:13 | ||
oh, i wasn't up to date with my panda repository | |||
tadzik | still weird | ||
grondilu | m: say 10, 20, 30 Z/ 1, 2; | 11:14 | |
camelia | rakudo-moar 705e7b: OUTPUT«10 10» | ||
grondilu | m: say 3 ... 0 Z/ 1, 2; | ||
camelia | rakudo-moar 705e7b: OUTPUT«3 2 1 0» | ||
timotimo | ayup, shell hangs. | ||
lizmat | timotimo: that's the same effect I've seen on OS X | ||
with the new libuv | |||
timotimo | ah, hold on | ||
lizmat | qx/foo/ hangs trying to read from the sub processes STDOUT | ||
is what jnthn sort of determined | 11:15 | ||
timotimo | had to realclean my moarvm repo | ||
(because i'm now "past" the commit where we reset libuv to the old version) | |||
grondilu | n: say 3 ... 0 Z/ 1, 2; | ||
camelia | niecza v24-109-g48a8de3: OUTPUT«3 1» | 11:16 | |
grondilu | n: sub infix:<choose> { [*] $^n ... 0 Z/ 1 .. $^p }; say 5 choose 3 | 11:17 | |
camelia | niecza v24-109-g48a8de3: OUTPUT«10» | ||
grondilu | m: sub infix:<choose> { [*] $^n ... 0 Z/ 1 .. $^p }; say 5 choose 3 | ||
camelia | rakudo-moar 705e7b: OUTPUT«0» | 11:18 | |
11:22
anaeem1_ joined
|
|||
[Coke] yawns. | 11:27 | ||
lizmat | morning [Coke] ! | ||
[Coke] | arglebargleearlymorningcalls | 11:28 | |
11:33
Px12 left
11:39
Rotwang left
|
|||
[Coke] | lizmat: morning. :) | 11:44 | |
11:48
colomon left,
BizarreCake left
11:51
[particle]1 joined
11:53
[particle] left
11:57
spider-mario left
11:58
jdv79 left,
jdv79 joined
11:59
M_o_C joined,
spider-mario joined
|
|||
hoelzro | tadzik: just one! | 11:59 | |
moritz | grondilu: exclude the 0 | 12:00 | |
m: sub infix:<choose> { [*] $^n ... 1 Z/ 1 .. $^p }; say 5 choose 3 | |||
camelia | rakudo-moar fcdf30: OUTPUT«120» | ||
tadzik | hoelzro: show meh :) | 12:01 | |
12:01
muraiki left,
TimToady left,
Rounin left,
breinbaas left,
MilkmanDan left
|
|||
hoelzro | tadzik: github.com/hoelzro/panda/commit/d0...e9f4f24810 | 12:01 | |
there's an outstanding PR | |||
tadzik | oh! | ||
sorry I missed it | |||
any chance for a test? :) | 12:02 | ||
dalek | nda: d0a9cb6 | (Rob Hoelz)++ | lib/Panda.pm: Force source-url into a Str Because sometimes it's an IO::Path |
||
nda: afcc877 | tadzik++ | lib/Panda.pm: Merge pull request #100 from hoelzro/master Force source-url into a Str |
|||
moritz | wow, pull request 100 | ||
lizmat | FWIW, I'm coming more and more to the conclusion that we need to get rid of IO::Path | ||
moritz | lizmat: why? | 12:03 | |
moritz likes it | |||
lizmat | well, this patch is another such example where we need a string.. and IO::Path is not a string, so we need to stringify it again | ||
moritz | but there are also quite many examples in the modules out there where IO::Path helps immensely | 12:04 | |
for example I'm pretty sure that the path traversal and manipulation in perl6/doc:htmlify.p6 wouldn't be platform independent if I had hand-coded it all with strings | 12:05 | ||
lizmat | but that is something that would need to live in IO::Spec, would it not ? | ||
12:05
MilkmanDan joined,
muraiki joined,
TimToady joined,
Rounin joined,
breinbaas joined
|
|||
lizmat | in fact: all that IO::Path does, is channel through to IO::Spec | 12:06 | |
moritz | not quite | ||
it's also very convenient that dir() returns IO::Path objects | |||
in fact, one could argue that the PR is only a stopgap solution | |||
and the proper thing would be support IO::Path object in $mod<source-url> | 12:07 | ||
12:07
brrt joined
|
|||
moritz | then it'd be even easier to detect that it's not an URL | 12:07 | |
lizmat | well, I feel that between IO::Path / IO::Spec / IO::Handle, there is one class too many | ||
moritz | yes, I never use IO::Spec | 12:08 | |
currently I see it as an implementation detail of IO::Path that I don't care about | |||
lizmat | yes, you do... but under the hood | ||
so you wouldn't mind seeing IO::Spec go | |||
as long as IO::Path kept its features | |||
? | 12:09 | ||
moritz | let's put it that way: I haven't used IO::Path features yet, but I can imagine situations where might be handy | ||
but I'm not too attached to it | |||
I am attached to IO::Path though :-) | |||
lizmat | I hear you :-) | 12:10 | |
on attachment to things | |||
masak: how about REAP instead of DESTROY ? | |||
masak | REAP also isn't a natural opposite of BUILD :/ | 12:11 | |
hoelzro | RAZE? =P | ||
tadzik | :) | 12:12 | |
lizmat | but I see REAP not being the opposite of BUILD | ||
just like death is not the opposite of birth | |||
nwc10 | www.bbc.co.uk/news/uk-england-york-...e-29126161 -- oh gnoes. it's been disproved. | 12:13 | |
12:14
jepeway joined
|
|||
tadzik | haah | 12:14 | |
I didn't even know there's such a saying | |||
[Coke] takes care of kid51++'s request about perl6-users | 12:15 | ||
lizmat | [Coke]++ | ||
fwiw, kid51++ is the [Coke]++ of p5p | 12:16 | ||
wrt to looking at tickets, testing, smoking, etc. | |||
brrt | lol nwc10 | 12:17 | |
masak | lizmat: but BUILD is not a birth metaphor. it's a construction metaphor. we're talking about objects, not organisms. | ||
moritz | DECONSTRUCT | ||
lizmat | DEMOLISH | ||
moritz | OH_NOEZ_I'M_DYING | 12:18 | |
12:18
JimmyZ joined
|
|||
JimmyZ | DEBUILD? ;) | 12:18 | |
jepeway | TEARDOWN? | ||
lizmat | moritz: no organisms | ||
moritz | JimmyZ: I thought that too | ||
[Coke] | lizmat: I feel like he's winning. :) | ||
brrt | what is actually wrong with DESTROY | ||
moritz | DISMANTLE | 12:19 | |
brrt | DISINTEGRATE | ||
lizmat | to me, REAP makes sense, as it is an external force deciding the remnants of a no longer used object being removed | ||
nwc10 | EXTERMINATE! EXTERMINATE! | ||
lizmat | aka a Reaper | ||
moritz | brrt: some people are afraid that other people mistake it to be the same a perl 5's DESTROY | ||
brrt doesn't know perl 5's DESTROY, actually | |||
12:19
BenGoldberg joined
|
|||
moritz | lizmat: also good for grim reaper jokes | 12:19 | |
masak | brrt: nothing is actually wrong with DESTROY. | ||
12:20
denis_boyun__ joined
|
|||
lizmat | brrt: it's timely, as opposed to Perl 6's cleanup | 12:20 | |
12:20
denis_boyun_ left
|
|||
JimmyZ | I think destroy is ok, it is simple enough for these people who aren't using english as there main language. | 12:20 | |
brrt | on the other hand, it happens before the object loses its integrity | ||
masak | but people enjoy bikeshedding, and there is a percieved problem that I don't agree with. | ||
JimmyZ | *as their | ||
brrt | i.e. after DESTROY the object is no longer a single thing | ||
moritz | brrt: p5's DESTROY is like p6's DESTROY, except that p5 is refcounted, and so DESTROY is always called immediately when an object goes out of scope | ||
brrt | i see | ||
moritz | afaict we have two options | 12:21 | |
lizmat | masak: if you've seen 100+s of web servers / database servers go down because suddenly database handles are no longer released when they're not needed anymore | ||
JimmyZ | DEBUILD is ok, methinks :) | ||
too | |||
lizmat | at several K$ / minute | ||
moritz | 1) stick with DESTROY; then we have to explain people why destruction isn't timely | ||
lizmat | you get sensitive to these things | ||
masak | I hear you. | 12:22 | |
moritz | 2) pick another name; then we have to tell people about the new name, why there is a new name, and we still have to explain to everybody that destruction isn't timely | ||
lizmat | and that's the issue here: in dev, all will work | ||
masak | still don't think that's a problem *inherent to naming*. | ||
ribasushi | jnthn: can you weigh in on my question from yesterday - what are the plans for timely destruction in p6 | ||
lizmat | if developers need to use a different name, they are easier aware of changed semantics | ||
JimmyZ +1 to DESTROY | |||
ribasushi | also note that DESTROY in p5 among other things has the option to abort the GC (this is heavily used in dbic and some other projects) | ||
brrt | lizmat: the issue then is that developers don't think about what they're doing, and that sucks in general | 12:23 | |
masak | what moritz++ said. the problem of explaining timeliness remains even after we abandon DESTROY and go for a sillier name. :/ | ||
12:23
Px12 joined
|
|||
masak | ribasushi: wow, TIL. that's horrible :) | 12:23 | |
lizmat | well, it's clear to me now that I can't convince you guys, so I'll shut up | 12:24 | |
and hope that I will be proven wrong | |||
moritz | ribasushi: how so? by installing the invocant in a symbol table somewhere? | ||
ribasushi | it's how I have leak-less circular references in p5 ;) | ||
moritz | ribasushi: also note that Perl 6 has proper scope guards (LEAVE phasers), so we might be able to avoid some clever DESTROY hacks | ||
and even a phaser for unsuccessful exits (UNDO) | 12:25 | ||
ribasushi | moritz: by flipping the strong/weak relationship between actors, keeping the strong refs pointing *out* of the part of the "graph" which is still in scope | ||
12:25
nebuchad` joined
|
|||
ribasushi | moritz: I am aware of all these, and yet there is a thing one can do with timely GC that can not be done with scopes | 12:25 | |
12:25
baest_ joined
|
|||
ribasushi | hence why I want jnthn to chime in | 12:25 | |
hoelzro | did anyone see my comments about trying to make Test::Tester work? about perhaps having to modify Test.pm? | 12:26 | |
moritz | hoelzro: I missed it | ||
masak | jnthn and I discussed this morning that we should probably have a construct like Python's `with`, C#'s `using` and Java 7's try-with-resource. | ||
hoelzro | moritz: I'll send a link, hang on | ||
masak | thing is, we could prototype it in module-space today as a sub, but then one would have to use a comma: `with $db.open, -> $dbh { ... }` | 12:27 | |
which is ugly. | |||
hoelzro | irclog.perlgeek.de/perl6/2014-09-09#i_9320542 | ||
12:27
Px12 left,
jerrycheung joined
|
|||
masak | this is another case where macros should just naturally swoop in and allow the user to define the keyword plus the completely normal/reasonable (but TTIAR) parsing rule of <expr> + <block> | 12:27 | |
12:28
nebuchadnezzar left
|
|||
masak | I think it's a huge mistake to leave this important job to textual macros. our AST macros should be able to do that. | 12:28 | |
otherwise we miss out on composition, and we're no better than source filters. | |||
dinner & | |||
moritz | hoelzro: IMHO it would make more sense to make proclaim available to the usr | ||
hoelzro: s/usr/module author/ | |||
hoelzro: though making Test.pm more OO, and exposing the actual test object would also be an option | 12:29 | ||
hoelzro | moritz: but that wouldn't prevent pass() and friends from calling proclaim() and modifying the test count | ||
I thought of that as well, but I'm nervous about such large change in such a crucial library | |||
12:30
dayangkun joined
|
|||
moritz | hoelzro: and why would you want to prevent pass() etc. from calling proclaim()? | 12:30 | |
grondilu | m: sub infix:<choose> { [*] $^n ... 1 Z/ 1 .. $^p }; say 5 choose 3 # was expecting 10 | ||
camelia | rakudo-moar fcdf30: OUTPUT«120» | ||
[Coke] | hoelzro: if only we had a way to make sure that changes to an important library didn't break anything... :) | ||
lizmat | hoelzro: the current Test.pm is a temporary hack: I'm all for making it better built | 12:31 | |
## This is a temporary Test.pm to get us started until we get pugs's Test.pm | |||
## working. It's shamelessly stolen & adapted from MiniPerl6 in the pugs repo. | |||
moritz | m: say 5...1 | ||
camelia | rakudo-moar fcdf30: OUTPUT«5 4 3 2 1» | ||
moritz | m: say 1..3 | ||
camelia | rakudo-moar fcdf30: OUTPUT«1..3» | ||
hoelzro | [Coke]: tests for Test.pm are on my TODO =) | ||
moritz: let's say I have a test that tests a test | |||
moritz | m: say 5...1 Z/ 1..3 | ||
camelia | rakudo-moar fcdf30: OUTPUT«5 4 3 2 1» | ||
carlin | change BUILD to SOW, and then REAP fits perfectly | ||
hoelzro | plan 2; test({ pass() }).ok; test({ flunk() }).not-ok; | ||
moritz | m: say (5...1 Z/ 1..3) | ||
camelia | rakudo-moar fcdf30: OUTPUT«5 4 3 2 1» | ||
grondilu | m: say 5...1 Z~ 1..3 | 12:32 | |
camelia | rakudo-moar fcdf30: OUTPUT«5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -…» | ||
hoelzro | test.ok should emit "ok 1", and test.not-ok should emit "ok 2" | ||
grondilu | wth | ||
12:32
nebuchad` is now known as nebuchadnezzar
|
|||
ribasushi | masak: this (timely destructors) ought to be a part of the spec imho, here is a doc I wrote a while ago when Zefram almost irreversibly broke p5's DESTROY semantics git.shadowcat.co.uk/gitweb/gitweb.c...control%3F | 12:32 | |
moritz | m: say (5...1 Z/ 1...3) | ||
ribasushi | bah, this was supposed to be a shortlink | ||
camelia | rakudo-moar fcdf30: OUTPUT«5 4 3 2 1» | ||
hoelzro | but the pass() in the passed in block emits "ok 1", and messes with the test count | ||
[Coke] | lizmat: that comment is out of date and should be fixed up. | ||
moritz | m: say ((5...1) Z/ (1...3)) | ||
12:32
jnthn left
|
|||
camelia | rakudo-moar fcdf30: OUTPUT«5 2 1» | 12:32 | |
moritz | grondilu: precedence problem | ||
grondilu | oh | ||
m: say (5...1) Z/ 1..3 | 12:33 | ||
camelia | rakudo-moar fcdf30: OUTPUT«5 2 1» | ||
grondilu | moritz++ nicely spotted | ||
moritz | hoelzro: well, if you want to test the tests, you could load a module which loads other test subs (like plan, pass, ok etc.) | ||
hoelzro | I thought of that too | 12:34 | |
moritz | hoelzro: though I don't know if that's a worse approach :-) | ||
hoelzro | let's say I'm writing a Test::Differences module (which I am) | ||
and I want to test eq-or-diff | |||
test({ eq-or-diff([], []) }).ok | |||
importing custom subs here wouldn't help | |||
12:34
Px12 joined
12:35
BenGoldberg left
|
|||
[Coke] | if you're testing Test.pm, I would recommend running an external program. | 12:35 | |
and then verifying that the tap output is what you expect. | |||
hoelzro | [Coke]: and if I'm testing a new test library that makes use of Test.pm? | 12:36 | |
12:36
BizarreCake joined
|
|||
[Coke] | The same? | 12:36 | |
hoelzro | you make a good poitn | 12:37 | |
point, even | |||
12:38
colomon joined
|
|||
[Coke] | or, of course "does this test file pass" and assuming that any passing TAP is acceptable, but that's not as rigorous. | 12:38 | |
hoelzro | shelling out seems less than ideal, though | ||
I suppose I *could* do test('eq-or-diff([], [])').ok instead | |||
but it seems...I don't know | 12:39 | ||
[Coke] | Point made, I wander away to get コオヒイ | ||
hoelzro | o/ [Coke] | 12:40 | |
enjoy...I think. | 12:41 | ||
lizmat | are we sure the MMD candidate opts are still working? | 12:54 | |
I was looking at adding a candidate for Cool.index | 12:55 | ||
multi method index(Cool $needle, Cool $pos = 0) { | |||
Cool '' | |||
so that: | |||
if $needle eq '' { | |||
my $chars = self.chars; | |||
return $pos < $chars ?? $pos !! $chars; | |||
} | |||
could be moved to the '' candidate | 12:56 | ||
12:56
anaeem1_ left
|
|||
lizmat | slurping / lines of /usr/share/dict/words then *doubles* in CPU / wallclock :-( | 12:56 | |
moritz | lizmat: it might be because it can't be expressed as a nominal type check | 12:57 | |
lizmat: so the dispatcher has to run perl 6 code to do the type check, on every dispatch. And it probably has trouble inlining | |||
12:57
JimmyZ_ joined
|
|||
lizmat | but '' should be easy to check, no? | 12:58 | |
dalek | kudo/nom: 2598e87 | duff++ | src/core/Str.pm: Str.samecase reimplementation mark 2 Implemented the array version found at gist.github.com/perlpilot/bd0939415bd63e35cdc3 which includes the code used for testing and timing the implementations. |
||
lizmat | hmmm... ok | ||
I see what you mean | |||
12:58
JimmyZ left,
JimmyZ_ is now known as JimmyZ
12:59
firefish5000 left,
pmurias joined
|
|||
moritz | things you could do: | 13:00 | |
a native str subroutine version of index | |||
we are much better at inlining subs | |||
and then we wouldn't have to handle all that Cool -> Str type casting | 13:01 | ||
(might even be better to move the current method from Cool to Str, and set up a coercing forwarder in Cool | |||
) | |||
lizmat | yes, was considering that | ||
moritz | also, $result could be a native int | 13:02 | |
13:02
akaseki left
|
|||
lizmat | I just did that :-) | 13:02 | |
moritz | (and only box on success) | ||
so, we're in violent agreement again :-) | |||
lizmat | yup | 13:03 | |
13:03
akaseki joined
|
|||
dalek | kudo/nom: 03cb92c | (Elizabeth Mattijsen)++ | src/core/Cool.pm: Don't box int when we don't need it |
13:04 | |
pmurias | ribasushi: re timely destruction the problem with calling DESTROY in a timely manner is that it's hard/really expensive to implement if we don't use refcounting | 13:05 | |
ribasushi | pmurias: C# does it with a special class of refcounted variables afaik | 13:06 | |
brrt mentally compares C# dev team resources with that of perl6 :-) | 13:09 | ||
PerlJam | ribasushi: So maybe if the programmer cares about timely destruction, there should be an "is refcounted" trait that hooks up all the appropriate stuff to make it happen ( if that's even possible) | ||
13:11
chenryn left
|
|||
ribasushi | PerlJam: something like this yes, the option should be there (and it doesn't even matter if it is performant) | 13:12 | |
nine | lizmat: isn't everyone using database connection pools nowadays anyway? | ||
ribasushi | nine: connection pools are for simple stateless IO | 13:13 | |
nine: the moment you get into txns, live with pools becomes *very* difficult | |||
*life | |||
pmurias | you won't be able to keep your refcounted obj in a garbage collected place | ||
ribasushi | pmurias: this is an implementation detail though... isn't it? | 13:14 | |
leont | hoelzro: I need to push my work in the direction of a Test::Builder, but it has to work first | 13:15 | |
pmurias | it seems like something that would require a horrible slowdown for everything | ||
moritz | PerlJam: t/spec/S05-modifier/ii.rakudo.moar hangs after your patch | ||
PerlJam: please run the tests before pushing :-) | 13:16 | ||
leont | Getting a weird «use of uninitialized value of type Str in string context in any !cursor_init at gen/moar/stage2/QRegex.nqp:599» warning that's not telling me where I screwed up | ||
pmurias | ribasushi: or the refcount will be have to kept manualy with '$obj.refcount++;' and '$obj.refcount--;' | 13:17 | |
PerlJam | moritz: I did | ||
(or I thought I did) | |||
I must have something weird going on on my system. :( | 13:18 | ||
13:18
kaare_ left
|
|||
ribasushi | pmurias: I can't take a stab assessing internal impact and whatnot, I can just keep the topic alive until the VM experts speak up | 13:18 | |
ribasushi looks @ masak ;) | |||
leont | Ah, figured it out… | 13:19 | |
PerlJam wipes his rakudo clone and starts from a clean slate. | 13:20 | ||
leont | subsets don't like their default initializer either… | ||
nwc10 | for some reason t/spec/S05-modifier/ii.rakudo.moar.t is chewing CPU | 13:21 | |
timotimo | sorry for disappearing | 13:29 | |
t.h8.lv/p6bench/2014-09-09-bisection.html | 13:30 | ||
see reduce_int_comb_range, any_equals, split_string_constant, split_string_regex, visit_2d_indices_cross, create_and_copy_2d_grid_cross, create_and_iterate_hash_kv, rc-forest-fire, rc-self-describing-numbers, rc-dragon-curve, rc-9-billion-names, rc-mandelbrot, spinner and rc-forest-fire-stringify | 13:32 | ||
moritz | nwc10: yep, it hangs, caused by last patch from PerlJam++ | ||
13:33
guru joined,
guru is now known as ajr_
|
|||
lizmat | m: say nqp::p6definite(fail) # would have expected False here, am I wrong ? | 13:34 | |
camelia | rakudo-moar fcdf30: OUTPUT«Unhandled exception:  at <unknown>:1 (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:13381 (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29) f…» | ||
lizmat | m: say nqp::p6definite(fail); 1 # would have expected False here, am I wrong ? | ||
camelia | rakudo-moar fcdf30: OUTPUT«Unhandled exception:  at <unknown>:1 (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:13381 (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29) f…» | ||
lizmat | huh? | ||
nwc10 | moritz: oh. that's LTA. :-( | 13:36 | |
13:36
jerrycheung left
|
|||
nwc10 | does anyone know how to restore Awesomeness? | 13:36 | |
PerlJam is looking, but not making any progress | 13:37 | ||
13:37
leont left
|
|||
colomon | FROGGS: suspect this is your v5 issue: gist.github.com/colomon/b139513e0014303bd00f | 13:38 | |
looks like one place it is Terms and the other Perl5::Terms | 13:39 | ||
lizmat | colomon: fwiw, that a similar error to what I see with my @*INC opt and panda | ||
moritz | PerlJam: but can you reproduce it? | 13:40 | |
PerlJam | aye. I can now. | 13:41 | |
13:42
anaeem1 joined
|
|||
dalek | kudo/nom: 48d9e4d | (Elizabeth Mattijsen)++ | src/core/ (2 files): Minimal optimizations in Cool.(r|)index Mainly by not having to .Str if it is already a Str. Gives about 2% on Str.lines on e.g. /usr/share/dict/words |
13:46 | |
13:46
firefish5000 joined,
anaeem1 left
13:47
anaeem1_ joined
|
|||
PerlJam | Blah. I've got some other work to do. I'll revert for now and try again later. Sorry for the trouble. | 13:47 | |
dalek | kudo/nom: 29ca8f7 | duff++ | src/core/Str.pm: Revert "Str.samecase reimplementation mark 2" This reverts commit 2598e8767e3b25d6a2548a7ba5ac68c0b371852c. |
||
13:48
anaeem1_ left,
kaleem left
|
|||
dalek | kudo/nom: eefe11e | (Timo Paulssen)++ | src/core/ListIter.pm: Revert "Reify lists with correct count." It caused massive performance regressions across the board. This reverts commit ce0c258640222761ab8176aff92cf9bbe5b3665f. |
13:48 | |
13:48
anaeem1 joined
|
|||
timotimo | ^- i spectested the revert and it was fine, so i thought "why not go ahead and push" | 13:48 | |
13:49
mr-foobar left,
kaleem joined
|
|||
pmurias | ribasushi: in C# they seem to have a .Dispose method that's manually called | 13:53 | |
13:53
anaeem1 left
|
|||
daxim | I would like to see a p6 translation of jlongster.com/Taming-the-Asynchrono...JavaScript | 13:53 | |
13:53
anaeem1 joined
13:55
kaleem left
13:56
kaleem joined
13:57
JimmyZ_ joined
13:59
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
hoelzro | pmurias: iirc, Dispose can also be invoked automatically by a using statement | 14:13 | |
PerlJam | Blah. I've got some other work to do. I'll revert for now and try again later. Sorry for the trouble.kk | ||
blah blah | |||
FROGGS | colomon: ewww | 14:19 | |
daxim | in nqp t/hll/06-sprintf.t, I have a test failure with #91 "simple %b with zero value". are these placeholders just passed through to libc? | 14:24 | |
timotimo | no, we implement them ourselves - at least on moarvm | 14:25 | |
daxim | alr | ||
FROGGS | timotimo: on all backends | ||
14:25
treehug88 joined
|
|||
timotimo | OK | 14:26 | |
FROGGS | there is nqp/src/HLL/sprintf.nqp | ||
daxim | I need to try again with master, will report back in a minute | 14:27 | |
14:27
JimmyZ_ joined
|
|||
FROGGS | hmmm, all tests pass on my linux x86_64 | 14:27 | |
14:28
anaeem1 left,
M_o_C left
14:29
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
timotimo | t.h8.lv/p6bench/2014-09-09-rakudo_h...ssion.html - FWIW, this is current nom, which contains my revert from an hour ago | 14:31 | |
oh, damn | 14:32 | ||
daxim | yup, I still get the failure. preparing bug report | ||
timotimo | while_push_join, while_push still regressed | ||
as did for_push | |||
daxim | apart from prove -v output, what else do you need to maximum detail? | ||
timotimo | and 9 billion names also regressed a bit | 14:33 | |
14:34
kaleem left
|
|||
FROGGS | daxim: uname -a and revisions of the repositories | 14:35 | |
(moar and nqp only in this case) | |||
(except when this is about nqp-p or nqp-j) | 14:36 | ||
daxim: all nqp tests pass on my opensuse 13.1-x86_64 | 14:37 | ||
daxim | it's with nqp-m, haven't built with other backends yet | ||
FROGGS | k | ||
moritz | got several test failures in an early abourt in S32-str/rindex.t | 14:39 | |
lizmat | on perl6-m ? | ||
moritz | yes | 14:41 | |
lizmat checks | |||
14:41
mr-foobar joined
|
|||
moritz | Failed tests: 2-3, 11-12, 15, 22, 24-31 | 14:41 | |
Non-zero exit status: 14 | |||
Parse errors: Bad plan. You planned 33 tests but ran 31. | |||
lizmat | confirmed here, looking at it | ||
14:41
JimmyZ_ joined
|
|||
moritz | also a non-zero exit status on S04-declarations/constant.rakudo.moar, and Failed test: 49 | 14:41 | |
FROGGS | substring not found | 14:42 | |
in method Numeric at src/gen/m-CORE.setting:13363 | |||
in sub infix:<==> at src/gen/m-CORE.setting:4457 | |||
14:42
JimmyZ_ left
|
|||
lizmat | that's probably because index() now returns Failure on not finding (as rindex did) | 14:42 | |
14:43
kaare_ joined,
JimmyZ left
|
|||
lizmat | I guess the fail is not according to spec | 14:44 | |
S32/Str:206 | 14:45 | ||
lizmat wishes synopsebot would recognize that as well | |||
tadzik | hmm | ||
lizmat adapts index/rindex | |||
tadzik | patches welcome :) it's on github now | ||
github.com/tadzik/synopsebot | 14:46 | ||
masak | pmurias: .Dispose can be manually called, for example when doing reactive stuff. but when possible, it's done implicitly through `using { ... }` | 14:48 | |
ribasushi: if you want VM people, you don't want me, you want #moarvm :) | |||
lizmat | m: my int $a = 42; say nqp::p6box_i($a,Int) # shouldn't this work? | 14:52 | |
camelia | rakudo-moar eefe11: OUTPUT«Cannot unbox a type object in block <unit> at /tmp/HsIdtXeI9s:1» | ||
lizmat | m: my int $a = 42; say nqp::p6box_i($a) # this does, but I want it to become a StrPos | ||
camelia | rakudo-moar eefe11: OUTPUT«42» | ||
lizmat | m: class StrPos is Int {}; my int $a = 42; say nqp::p6box_i($a,StrPos) # like this | ||
camelia | rakudo-moar eefe11: OUTPUT«Cannot unbox a type object in block <unit> at /tmp/Kx6Pf7ShfX:1» | 14:53 | |
moritz | lizmat: nqp::box_i($a, StrPos) | ||
lizmat: (iirc) | |||
lizmat | ah | ||
moritz++ | |||
14:56
chenryn joined
14:58
jnthn joined
|
|||
lizmat | $ perl6 t/spec/S32-str/rindex.t | 14:58 | |
Segmentation fault: 11 | |||
ooh, wow | |||
moritz | lizmat: did you give StrPos a native int attribute that's set up as box_target? | 14:59 | |
lizmat | eh, no... | ||
class StrPos is Int { } | |||
moritz | oh | ||
lizmat | I guess that was too naive | 15:00 | |
moritz | then one would guess it would inherit that | ||
m: class StrPos is Int { }; say nqp::box_i(42, StrPos) | |||
camelia | rakudo-moar eefe11: OUTPUT«42» | ||
moritz | that alone doesn't seem to segfault :-) | ||
lizmat | indeed | ||
running the first test of that file, doesn't either | 15:01 | ||
15:01
chenryn_ joined
|
|||
jnthn | evening, #perl6 | 15:02 | |
hoelzro | o/ jnthn | 15:03 | |
lizmat | jnthn o/ | ||
even segfaults with spesh disabled | |||
seems the segfault occurs after the first test and before the second | 15:04 | ||
if I remove all of the tests except the first, it's ok | |||
nine | \o jnthn | ||
lizmat | if I also keep the second test, it segfaults without saying anything | ||
15:04
chenryn left
15:06
leont joined
|
|||
pmurias | jnthn: hi | 15:06 | |
15:08
denis_boyun__ left
|
|||
FROGGS | moritz: this should show results: irclog.perlgeek.de/perl6/search/?ni...q=VMThread | 15:11 | |
moritz: this one here for example irclog.perlgeek.de/perl6/2014-09-08#i_9315916 | |||
moritz | FROGGS: I'll try to remember to look at that | 15:13 | |
FROGGS | thanks :o) | ||
lizmat | moritz: hmm... the segfault is not related to StrPos :-( | 15:14 | |
15:16
grondilu left
|
|||
masak | how can I reliably convert a text file to \r\n newlines using perl6? | 15:18 | |
by "reliably" I mean it shouldn't matter if the input has \n newlines or \r\n newlines. | 15:19 | ||
lizmat | "path".IO.lines.join("\r\n") | ||
masak | ooh | ||
masak tries | |||
lizmat++ | |||
lizmat | it should even handle \r only ended lines | ||
FROGGS | m: say "a\rb\r\nc\nd".lines.perl | 15:20 | |
camelia | rakudo-moar eefe11: OUTPUT«("a\rb\r", "c", "d").list» | ||
FROGGS | no | ||
but it should | |||
15:20
cognome left
|
|||
FROGGS | star-m: say "a\rb\r\nc\nd".lines.perl | 15:20 | |
camelia | star-m 2014.04: OUTPUT«("a\rb\r", "c", "d").list» | ||
FROGGS | hmmm, I thought it did | ||
15:20
cognome joined
15:21
yeahnoob left
|
|||
FROGGS | p: say "a\rb\r\nc\nd".lines.perl | 15:21 | |
masak | Timbus and I discussed this in the backlog the other day. | ||
camelia | rakudo-parrot eefe11: OUTPUT«("a\rb\r", "c", "d").list» | ||
masak | we even arrived at a better spec for lines | ||
the current one is busted | |||
lizmat | masak: am working on Str.lines atm | ||
FROGGS | I think what I remember is that the readline op knows about the three line seps... | 15:22 | |
masak | lizmat: did you see that discussion? | ||
lizmat | indeed, Str.lines will shortly work like IO.lines | ||
masak | lizmat: I ended up doing .IO.lines.map({"$_\r\n"} because I wanted the final newline. but you set me off in the right direction :) | ||
lizmat | it should handle \r , \r\n and \n | ||
right ? | 15:23 | ||
FROGGS | yes yes | ||
lizmat | that's what I'm working on | ||
FROGGS | and \r\n as one line sep :o) | ||
lizmat | in that process I broke rindex | ||
looking at that now | |||
jnthn | ribasushi: Currently the best bet is to use a LEAVE phaser to clear up at scope exit. I expect we'll end up with some sugar for that, as masak mentioned earlier. Generally, resource management and GC are decoupled in Perl 6 (as in many other languages). That makes sense: the programmer cares about resource management, but memory management is something to abstract away. | ||
FROGGS | nine: I bisect rakudo right now because of a "missing serialize REPR function", the commit you pointed out was reverted by I still hit it in v5 | 15:25 | |
jnthn | ribasushi: Perl 5's conflation of the two is one thing that prevents realistically having Perl 5 on JVM. | ||
15:25
cognome left
|
|||
ribasushi | jnthn: well... I don't particularly care about the memory, I care about the resource (object) being available | 15:25 | |
jnthn: so does this mean that a true refcounted thingy is not possible in the p6 context (alongside the more standard javaesque GC) | |||
jnthn | Right, so let the GC take care of memory, and use other explicit constructs for resources. | 15:26 | |
brrt | jnthn: i'd argue that resource (i.e. sockets & file handle) management being the developers responsibility and memory management not is a historical weirdness more than anything else | 15:27 | |
developers' | |||
i mean, either you can be careless or you cannot | |||
and the only reason you can't be careless is because you run out of file handles | 15:28 | ||
jnthn | Trying to mix refcounting with GC is a world of pain, so far as I can tell. We do it in one place in MoarVM. It works out worth it for performance - but that's the only thing I like about it. | ||
brrt | where do we do that, actually? | ||
oh frames | |||
jnthn | brrt: Frames. | ||
brrt | :-) | ||
i recall | 15:29 | ||
and ehm, i have ... words ... about those frames | |||
jnthn | And it is painful 'cus the rest of the GC is generational, and the ref-counted frames don't play ball with the generational system. | ||
brrt nods | |||
if it were at all feasible i'd have frames be stackallocated by default | |||
15:29
bjz left
|
|||
jnthn | Well, the reason they're the way they are is because sitting in a hot loop invokving stuff and the code dealing purely with native types or eisting objects should not be causing allocatins. | 15:30 | |
15:30
zakharyas left
|
|||
jnthn | Yes, but continuations, and closures, and... :) | 15:30 | |
15:30
bjz joined
|
|||
jnthn | Stack alloc is partly good due to being cheap, also due to locality of reference. The current re-use scheme at lesat nails the second. | 15:30 | |
brrt | there are ways to deal with that. i'd agree that for all supported platforms that would be hard | ||
i.e. the default way would be to copy (parts of) the stack to the heap in case of closures | 15:31 | ||
nine | jnthn: have been putting destructors to good use already in Inline::Perl5. Now if you tell me how I can free callbacks, I can fix the last large memory leak :) | 15:33 | |
15:34
ajr_ left
|
|||
jnthn | nine: Um...free callbacks? | 15:34 | |
15:34
guru joined
|
|||
jnthn | nine: Are you taking a closur eper callback? | 15:34 | |
15:34
Rotwang joined
|
|||
jnthn | If so, that's probably the issue. | 15:34 | |
15:34
Rotwang left,
Rotwang joined
|
|||
nine | jnthn: callback functions passed to native call. I use two per Perl 6 object passed to Perl 5. One for unwrapping and one for calling methods. I guess I have to free those manually when Perl 5 is not using them anymore. | 15:34 | |
15:35
guru is now known as Guest46740,
Guest46740 is now known as ajr_
|
|||
nine | jnthn: if you have another good idea how I can unwrap a Perl 6 object, I'm definitely interested. | 15:35 | |
jnthn | Well, we cache some amount of the callback infrastructure by codde object... | ||
*code | |||
I thought the per-call stuff was already cleaned up | |||
nine | jnthn: but how does MoarVM know that I'm not using the callbacks anymore? | 15:36 | |
jnthn | ribasushi: "C# does it with a special class of refcounted variables" - no, it does it with a construct called using (some expr producing an object) { ...object used in this scope... }, and the object should implement IDisposable. It ensures that at the closing curly, .Dispose() is called on the object. | 15:37 | |
nine | jnthn: github.com/niner/Inline-Perl5/blob...5.pm6#L144 and github.com/niner/Inline-Perl5/blob...per.c#L241 | 15:38 | |
masak | [Coke]++ # irclog.perlgeek.de/perl6/2014-09-08#i_9319321 | ||
jnthn | And yes, a construct like that is very much what I'm suggesting we have in Perl 6. | ||
ribasushi | jnthn: hm... I see, either I am misremembering a language or whoever explained this to me didn't know shit ;) | ||
jnthn | ribasushi: Having built a lot of stuff in C#, I can say I've been quite happy with this solution. | 15:39 | |
brrt | jnthn: that's pretty much with(obj) in python | ||
ribasushi | I think I am not stating the question correctly | ||
jnthn | brrt: Yup. | ||
ribasushi | it's not that I care when (or if ) gc happens | ||
dalek | p: 2e5a9c0 | (Tobias Leich)++ | / (2 files): add Configure option --with-moar, daxim++ Also, document --with-moar and --make-install |
||
15:40
pochi joined
|
|||
brrt afk | 15:40 | ||
ribasushi | jnthn: I want to know if the refcount semantic can be bestowed upon an object (or whatever special primitive it is) and have it work alongside everything else (note - ref-based, not scope-based) | ||
brrt | ribasushi: long-story-short, no | ||
masak | +1 | ||
ribasushi | yes I understand it will be slow, I am asking if the option is at all available for code that requires it | ||
masak | it's a question of who owns the object. and the short answer is "the GC does". | 15:41 | |
15:43
integral left
|
|||
jnthn | ribasushi: I presume you're meaning "in some way other than a role with a .inc-ref and .dec-ref method that the programmer calls themselves"? | 15:43 | |
ribasushi | no, calling things oneself is easy (and compltely out of scope) | 15:44 | |
let me show example code instead | |||
15:45
brrt left
|
|||
ribasushi | jnthn: paste.scsys.co.uk/422328 | 15:47 | |
basically I am using a guard that is passed throughout scopes to indicate global-ish state | |||
and that pattern is used a lot in the wild (darkpan) | |||
hence why the strong interest on this | 15:48 | ||
15:51
cognome joined
15:52
eternaleye left,
cognome left,
cognome joined
15:54
adu joined
|
|||
jnthn | ribasushi: If I understand this correctly, the second piece of code is what you'd need to do if you didn't have the guard mechanism in the first? | 15:54 | |
ribasushi | jnthn: correct | ||
jnthn | OK, what I'm missing is how this becomes about ref counting and not about dynamic scoping... | 15:56 | |
15:56
rindolf left
15:57
cognome left
|
|||
masak | dynamic scoping sounds like it could be handled with LEAVE, too. | 15:59 | |
jnthn | That is, if the first is a convenient way to write the second, I don't yet see why a little higher order programming later you can't massage the first into the second. | ||
(So I think I'm missing something important that you're trying to get over :-() | 16:00 | ||
ribasushi | jnthn: I am afraid I don't follow what dynamic scoping is in this case | ||
16:00
kaleem joined
|
|||
jnthn | ribasushi: Just that during the execution of $code->(@args), the enclosing try block with attached finally is in the dynamic scope (caller chain) of that code, such that we find ourselves after it's done back in the right place to call the finally - independent of what $code does. | 16:03 | |
masak | m: sub foo { my $*DYN = 42; bar; say $*DYN }; bar { $*DYN = 5 }; foo | 16:04 | |
camelia | rakudo-moar eefe11: OUTPUT«===SORRY!=== Error while compiling /tmp/5Q95LnYhMKUndeclared routine: bar used at line 1. Did you mean 'bag'?» | ||
masak | m: sub foo { my $*DYN = 42; bar; say $*DYN }; sub bar { $*DYN = 5 }; foo | ||
camelia | rakudo-moar eefe11: OUTPUT«5» | ||
ribasushi | jnthn: the point here is that the guard stays alive until ->commit time | 16:05 | |
but if at any point something breaks | |||
it will issue a ->rollback right then and there | |||
and I do not need to be careful *where* the breakage will happen - the DESTROY will reliably fire when it needs to | |||
jnthn | OK, so the second piece of code is not equivalent to the first, in that regard? | 16:06 | |
ribasushi | it is because txn_do will also call a rollback on exception-scope-leave | 16:07 | |
sorry it's an example from a different argument, it doesn't illustrate my point well | |||
japhb | Holy cow, people went nuts on S99-glossary recently. (All those who worked on it)++ | 16:08 | |
16:09
anaeem1 joined,
Akagi201_ left
|
|||
jnthn | ribasushi: OK. It's midnight here and I should probably rest now; I'd like to get to the bottom of what you're needing. | 16:11 | |
But I don't think I'm smart enough tonight. :) | |||
16:11
rindolf joined
|
|||
ribasushi | jnthn: oh, I thought you are in my tz | 16:11 | |
jnthn: we will chat tomorrow (well, tonight) then ;) | |||
jnthn | ribasushi: No, currently on a consulting job over in China. :) | 16:12 | |
ribasushi | a-ha | ||
16:13
kaleem left
|
|||
masak | 'night, jnthn | 16:13 | |
jnthn | Anyway, let's try and continue this tomorrow | 16:14 | |
'night | |||
16:17
kaleem joined
|
|||
colomon | \o | 16:17 | |
ribasushi | o/ | 16:20 | |
TimToady | m: say (1..*)[100000] | 16:22 | |
camelia | rakudo-moar eefe11: OUTPUT«P6opaque: no such attribute '$!storage' in method reify at src/gen/m-CORE.setting:7894 in method gimme at src/gen/m-CORE.setting:8377 in method exists_pos at src/gen/m-CORE.setting:8365 in method at_pos at src/gen/m-CORE.setting:8339 in…» | ||
TimToady | timotimo: congrats, you've reinstalled the 100000 bug... | ||
16:23
Akagi201 joined
|
|||
lizmat | .oO( too bad there is no test for the 100000 bug ) |
16:24 | |
masak .oO( unfortunately, no-one can be *told* what the 100000 bugs is. you have to see it for yourself. ) | 16:25 | ||
lizmat | hmmm... actually, there is one: t/spec/S04-declarations/constant.t, last test | ||
pmurias | ribasushi: what is the big difference between the first and the second example? that the guard behaves correctly with exceptions? | ||
dalek | kudo/nom: 914434e | (Elizabeth Mattijsen)++ | src/core/ (2 files): Revert "Minimal optimizations in Cool.(r|)index" This is a complete and utter MMD and whatever mess that segfaults. Abandoning this now. |
16:26 | |
16:27
adu left
|
|||
ribasushi | pmurias: I need to come up with a better example (need to scour codebase for one) | 16:27 | |
lizmat | dinner& | ||
16:28
Isp-sec joined
|
|||
japhb | The last few weeks, I've been seeing a much higher percentage of revert commits. Has this trend already been discussed? Is the consensus that this is showing health (lots of people taking useful risks, for example), or a problem (risky changes not going into a branch)? | 16:29 | |
16:30
ajr_ left
|
|||
masak | dunno. I'm fond of branches, but I don't immediately think that many reverts on the nom branch are a bad thing. | 16:31 | |
I'm guessing the reverts happen not because of spectest failures, because those probably (mostly) get caught before the commits are pushed. | 16:32 | ||
japhb | I've been seeing it across multiple repos. At least rakudo and moar, I forget if NQP also (some of the NQP commits are to bump the moar rev to pick up a revert, for example). | 16:35 | |
16:35
kaleem left
|
|||
pmurias | aren't at least some of them tricky optimalisations that don't end up working so well? | 16:37 | |
masak | japhb: some of the reverts are due to discussions (over API design etc) happening here on #perl6. such reverts are prefectly cromulent IMHO, and a sign of health. | 16:38 | |
carlin | panda's list still not updating? | ||
16:39
glumm joined
|
|||
masak | japhb: it's even likely that those commits are more visible (and generate better discussion sooner) when they're on master^Wnom. | 16:39 | |
'night, #perl6 | |||
japhb | I'm not even sure I'm concerned (I do like the risk-taking), but if there's anything that might be an issue I'd say perhaps a couple things: 1) People aren't including performance regressions as a standard check (like spectesting). This may be because perf testing takes too dang long. 2) Cross-platform issues; I'd say this is lack of CI infrastructure. 3) Difficult for bystanders to find a "safe and close to HEAD" release for personal use (or to base their own | 16:41 | |
night, masak | |||
16:41
ab5tract joined
|
|||
dalek | kudo-star-daily: b474d46 | coke++ | log/ (14 files): today (automated commit) |
16:41 | |
rl6-roast-data: 59d8bba | coke++ | / (6 files): today (automated commit) |
|||
16:43
integral joined
|
|||
[Coke] | I would like more testing before pushing, but that's not going to test perf issues, cross platform issues, etc. as long as we don't get too far along a path (see parrot breakage!) I don't mind things going in and getting fixed within a day. | 16:43 | |
in an -ideal- state, though, most stuff goes into a branch, gets smoked, and then gets deemed ok to merge. :) | 16:44 | ||
parrot: now failing almost 300 tests, and has been failing since August 27th. | 16:45 | ||
moar & moar.jit failing 141 tests, not clean since August 28th. | 16:46 | ||
16:47
dayangkun left
|
|||
[Coke] | jvm: failing 167 tests, not clean since September 1st. | 16:47 | |
So, we currently have more churn than I'd like. | |||
(a lot more) | |||
ab5tract | colomon: i responded again on the pull request | ||
leont | Where are parameterized types (e.g. Array[Foo]) explained? | 16:48 | |
ab5tract | i think the operator just doesn't make sense for bags (then again, i haven't found the set operators in the synopses yet) | 16:49 | |
leont | It seems «role Foo [::T]» works but «class [::T]» doesn't, and I don't understand why | 16:50 | |
16:51
cognome joined
16:53
lichtkind joined
16:56
cognome left
|
|||
japhb wonders about some system that allows branches to be marked "auto-mergeable", then some build/test infrastructure attempts to smoke it various different ways (spectest, benchmarks, etc.), and if they're all clean, it does the merge automatically. Seems like for a fair number of recent patches, that would have worked pretty well. | 16:56 | ||
Of course, we'd still need to make said infrastructure actually *happen*. | |||
colomon | ab5tract: yeah, I agree commutative seems right | 17:00 | |
17:00
dakkar left
|
|||
ab5tract | however, i wonder if it could also be considered for bags to use a slightly different logic, where it takes the intersecting keys and subtracts the right-weights from the left-weights | 17:01 | |
leont | Ah, Array.pm serves as an example, though not one as simple as I had hoped for :-s | 17:02 | |
colomon | ab5tract: I've been trying to abstract the idea in my head. set symmetric difference is (union of sets) - (intersection of sets), no? | 17:03 | |
ab5tract | that way you could get the lowest possible intersecting weights from a list of bags | ||
indeed | 17:04 | ||
colomon | ab5tract: seems to me those operations make sense on bags too | ||
just in a baggy-sense | |||
er, baggy sense | 17:05 | ||
ab5tract | along those lines.. | 17:06 | |
do the evalbots keep any test data around? | |||
it would be easier to do interesting things with bags and lists without pasting them in | |||
colomon | m: .say for lines; | ||
camelia | rakudo-moar eefe11: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGallAgus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luíI mo dhiaidh bhí gleanntáin ghlas’ G…» | ||
17:07
virtualsue left
|
|||
colomon | m: say slurp.comb(/./).Bag | 17:08 | |
camelia | rakudo-moar eefe11: OUTPUT«bag(C(2), é(11), a(116), d(18), (202), s(43), l(59), á(28), n(64), g(38), i(69), b(19), h(86), t(31), e(41), m(37), o(46), r(48), D(10), ú(10), G(13), (20), A(4), u(13), c(26), E, ;(4), N(3), L(2), ’(10), í(13), I(2), ,(8), .(4), M(2), ó(6), f(1…» | ||
vendethiel- | leont: classes can't be parameterized. For some reason | 17:09 | |
ab5tract | m: my $words = bag lines[0..100].map; my $anags = bag $words.map: .sort; say $anags.perl(); | 17:10 | |
camelia | rakudo-moar eefe11: OUTPUT«Cannot call 'map'; none of these signatures match::(Any: Whatever, *%_):(Any: Any $block, Any :label($label), *%_) in block <unit> at /tmp/LgO__ew7b6:1» | ||
17:10
grettis joined
|
|||
ab5tract | m: my $words = bag lines[0..100].map; my $anags = bag $words.keys.map: .sort; say $anags.perl(); | 17:10 | |
camelia | rakudo-moar eefe11: OUTPUT«Cannot call 'map'; none of these signatures match::(Any: Whatever, *%_):(Any: Any $block, Any :label($label), *%_) in block <unit> at /tmp/wlHmmYgXg1:1» | ||
17:11
cognome joined
|
|||
FROGGS | ab5tract: you have to pass something to .map | 17:11 | |
ab5tract | m: my $words = bag for slurp -> $s ; my $anags = bag $words.keys.map(->$k{ $k.sort}); say $anags.perl(); | 17:12 | |
camelia | rakudo-moar eefe11: OUTPUT«===SORRY!===The 'bag' listop may not be called without arguments (please use () or whitespace to clarify)at /tmp/yZMLB5A1W7:1------> my $words = bag ⏏for slurp -> $s ; my $anags = bag $wordsInvalid typenam…» | ||
ab5tract | m: my $words = bag lines[0..100].map; my $anags = bag $words.keys.map(->$k {$k.sort}); say $anags.perl(); | ||
camelia | rakudo-moar eefe11: OUTPUT«Cannot call 'map'; none of these signatures match::(Any: Whatever, *%_):(Any: Any $block, Any :label($label), *%_) in block <unit> at /tmp/hhFHXoryNX:1» | ||
ab5tract | oh, duh | ||
sorry | |||
m: my $words = bag lines[0..100]; my $anags = bag $words.keys.map(->$k {$k.sort}); say $anags.perl(); | |||
camelia | rakudo-moar eefe11: OUTPUT«("Céad slán ag sléibhte maorga Chontae Dhún na nGall"=>1,"Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;"=>1,"Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí"=>1,"I mo dhiaidh bhí gleanntáin…» | ||
FROGGS | ab5tract: you can also talk to camelia directly | 17:13 | |
ab5tract | FROGGS: thanks for the tip | ||
17:19
telex left
17:20
telex joined
|
|||
ab5tract | hmm | 17:24 | |
m: my $t = 'this'; say "now _{$t}_ is perl"; | 17:27 | ||
camelia | rakudo-moar eefe11: OUTPUT«now _this_ is perl» | ||
ab5tract | camelia had stopped responding to me through messages | 17:28 | |
Timbus | coming on a bit strong | ||
ab5tract | glad to know she is ok | ||
17:28
pat_js joined
|
|||
ab5tract | yeah, it can happen ;) | 17:28 | |
colomon apologizes to ab5tract for disappearing | 17:33 | ||
colomon blames noms | |||
17:41
gfldex joined
|
|||
colomon | ab5tract: so I think, given @p bags, bag symmetric difference can be defined as ([(|)] @p) (-) ([(&)] @p) | 17:45 | |
that's commutative I think | |||
17:47
[Sno] left
17:49
glumm left
17:50
bjz left
17:51
bjz joined
17:54
chenryn_ left
17:55
anaeem1 left
|
|||
dalek | p: 5fa79ba | (Tobias Leich)++ | .travis.yml: add travis-ci config file |
18:02 | |
ab5tract | ah, now that's a nice way to say it colomon | 18:12 | |
my $a = bag 88,88,88,4,3,3,1,3,88; my $b = bag 88,4,3; my $i = $a (|) $b; my $nw = BagHash.new; for $i.keys -> $k { $nw{$k} = $a{$k} - $b{$k} }; $nw.say | |||
m: my $a = bag 88,88,88,4,3,3,1,3,88; my $b = bag 88,4,3; my $i = $a (|) $b; my $nw = BagHash.new; for $i.keys -> $k { $nw{$k} = $a{$k} - $b{$k} }; $nw.say | |||
camelia | rakudo-moar 914434: OUTPUT«BagHash.new(88(3), 3(2), 1)» | ||
dalek | p: b859815 | (Tobias Leich)++ | docs/ops.markdown: fix typo in ops documentation |
||
ab5tract | that's subtracting though | ||
with addition it is commutative | |||
18:13
akaseki left
18:14
Px12 left
|
|||
ab5tract | though i wonder what a saner person than me would expect from executing something to the effect of "given the symmetric difference of a bag of words and and a bag of anagrams amongst those words" | 18:15 | |
18:15
akaseki joined
|
|||
dalek | p: ba8511d | (Tobias Leich)++ | .travis.yml: fix missing quote in travis file |
18:16 | |
18:16
eternaleye joined,
pat_js left
|
|||
ab5tract | "symmetric difference" to me might imply that you are looking to subtract the weight of one bag ($b) from another bag ($a) | 18:16 | |
maybe TimToady has some ideas | |||
timotimo | TimToady: well, *that* was not The Fix for The Bug :) | 18:17 | |
18:17
akaseki is now known as DrSeki
18:18
jack_rabbit joined
|
|||
ab5tract | colomon: ah, i missed the crucial (-) in there | 18:19 | |
18:19
travis-ci joined
|
|||
travis-ci | [travis-ci] perl6/nqp#1 (master - ba8511d : Tobias Leich): The build passed. | 18:19 | |
[travis-ci] Change view : github.com/perl6/nqp/compare/b8598...8511dda6f2 | |||
[travis-ci] Build details : travis-ci.org/perl6/nqp/builds/34840958 | |||
18:19
travis-ci left
18:20
BizarreCake left
|
|||
FROGGS | @all: if the travis stuff is going to make too much noise, I can let it spam another channel | 18:21 | |
vendethiel- | FROGGS: that's one more message for everycommit ? | 18:24 | |
+ join/part? | |||
FROGGS | vendethiel-: yes, this block for every commit to nqp + every commit to rakudo | ||
PerlJam | every commit or every receive? i.e., If jnthn makes 5 commits locally and then pushes them all at once do we get 5 or 1 travis message? | 18:30 | |
hoelzro | woah, when did travis start working for us? | ||
FROGGS | PerlJam: every push I think | 18:31 | |
hoelzro: right now | |||
hoelzro: though, I let it only test on moarvm, because of speed reasons | |||
PerlJam | FROGGS: regardless of whether travis is too noisy, it might be a good idea to have a channel that is just the output of dalek + travis-ci | 18:34 | |
FROGGS | moritz: what do you think? | 18:35 | |
18:37
erdic left
|
|||
[Coke] | I find that "comment on failure, comment on first success" works. | 18:37 | |
FROGGS | [Coke]: I'm not sure that I can configure it | ||
18:37
erdic joined
|
|||
PerlJam | [Coke]++ that would be excellent too. | 18:38 | |
vendethiel- | [Coke]++ # troo | ||
FROGGS | is that even possible? | 18:39 | |
vendethiel- | make it so :P | 18:40 | |
FROGGS | O.o | ||
vendethiel- | FROGGS: I know that's how I receive it by email | ||
PerlJam | FROGGS: It's just a simple matter of programming! ;) | ||
[Coke] | yah, I have no idea if it works in this context; it's waht we use for builds at work, though in completely other system. :) | ||
FROGGS | ahh, I can adjust it... nice! | 18:42 | |
[Coke] | FROGGS++ | ||
rurban | the change view is not helpful, but the build link is | 18:45 | |
on #perl11 will changed his lines for rperl to 2 lines | 18:46 | ||
dalek | p: 08d8e3c | (Tobias Leich)++ | .travis.yml: only notify via travis when status has changed |
||
18:48
guru joined,
guru is now known as ajr_
|
|||
PerlJam | FROGGS: so, with that configuration, as long as the build is succeeding (or failing) there won't be any notifications? | 18:48 | |
It's only when we change from success to failure (or vice versa) that we'll see anything? | |||
FROGGS | PerlJam: there is no notification as long as the status stays in its state | ||
yes | 18:49 | ||
though, only nqp is activated, since one needs admin rights to flip some switches | |||
PerlJam | might want to switch on_failure to "always". | 18:50 | |
dalek | kudo/nom: c8df775 | (Tobias Leich)++ | .travis.yml: add travis config file |
||
FROGGS | PerlJam: that would mean that one thinks that his/her commit broke stuff when it did not | 18:51 | |
but then more ppl would see that it is broken, and maybe act more quickly :o9 | |||
:o) | |||
PerlJam | Well, that's kinda what I was thinking. | 18:52 | |
18:53
slavik left
|
|||
PerlJam | It might depend on what the failure message says too. If it can be configured to say something like "The build is *STILL* broken by commit ..." where we can plainly see that the commit that's broken is different from the most recent one, that would help. | 18:54 | |
hoelzro | FROGGS++ | ||
18:56
ivanshmakov is now known as ivanshmakov|
18:57
ren1us joined
|
|||
dalek | p: 2e21ba6 | (Tobias Leich)++ | .travis.yml: travis notification tweaks |
18:57 | |
kudo/nom: 69bbdc4 | (Tobias Leich)++ | .travis.yml: travis notification tweaks |
|||
FROGGS | [Coke]++ PerlJam++ hoelzro++ rurban++ | ||
now there is a lot travis spam to look at :o) | 18:58 | ||
[Coke] | yay, thanks! | ||
FROGGS | sad that we can only have linux tests right now :/ | 18:59 | |
18:59
ivanshmakov joined
|
|||
FROGGS | hoelzro: btw, you are to blame that v5 fails :P | 19:01 | |
moritz is willing to try travis again | |||
hoelzro | for real? =( | ||
FROGGS: the Test.pm changes? | |||
FROGGS | hoelzro: yeah... somehow the exported handles will get serialized (or attempted to) | 19:02 | |
hoelzro: I'm not yet sure why | |||
I guess I'll strip down Perl5::Terms to see why that happens | |||
hoelzro | so it worked, but when I added our sub output is rw { $output } and friends, it stopped working? | ||
FROGGS | moritz: do you have time to flick the switches for rakudo? | ||
hoelzro: it worked until github.com/rakudo/rakudo/commit/70...df921b907c | 19:03 | ||
hoelzro | damn | ||
that's...odd. | |||
FROGGS | yeah... | ||
[Coke] | have we had a travisbot post yet? huh? | ||
or not until the first failure? | |||
FROGGS | [Coke]: for nqp, aye | ||
45 minutes ago | 19:04 | ||
moritz | FROGGS: what do I have to do? | ||
FROGGS | moritz: got to github.com/rakudo/rakudo/settings/hooks | 19:05 | |
[Coke] | ah, FROGGS++ | ||
FROGGS | add the travis service, without userinfo, and activate it | ||
19:06
slavik joined
|
|||
moritz | FROGGS: done | 19:06 | |
FROGGS | moritz: and then go to travis-ci.org/profile/rakudo and click sync, and then enable it for rakudo there too | ||
19:09
ivanshmakov| left
|
|||
moritz | urks. When I log in with my github account, travis wants all kind of permissions that I'm loat to hand out | 19:09 | |
FROGGS | :/ | ||
colomon just handed them out... | |||
FROGGS | me too | ||
colomon means his, not moritz's | |||
FROGGS | *g* | ||
colomon | It's showing me just perl6/nqp? | 19:10 | |
ren1us | is it just my imagination, or are io functions still painfully slow? | 19:14 | |
moritz | ren1us: many of them certainly are :( | ||
ren1us | it takes me about 45 seconds just to slurp an 86k character file, plus 6 minutes and counting on a split('') | 19:16 | |
19:16
[Sno] joined
|
|||
moritz | uhm, don't count on split('') | 19:17 | |
.chars is much, much better | |||
yoleaux | , b c e h i m r s t u | ||
[Coke] | .chars that seems like a one way function | 19:18 | |
yoleaux | No characters found | ||
moritz | but yes, 45s for slurping is far too slow | ||
ren1us | oh that's not what i meant by counting | ||
i meant it's 6 minutes and isn't done yet | |||
moritz | oh | ||
if you want single characters, use .comb | 19:19 | ||
FROGGS | ren1us: how exactly do you slurp it? | ||
or better: what exactly takes 45s? | |||
moritz hopes with .slurp | |||
FROGGS | that won't take that long | ||
ren1us | given slurp($filename) { // stuff // } | 19:20 | |
that takes painfully long for some reason | |||
i'm guessing it's just my abomination of a computer | 19:21 | ||
FROGGS | time perl6 -e 'say "val.profile".IO.s; say "val.profile".IO.slurp.chars' | ||
336066 | |||
real0m0.212s | |||
m: say slurp().chars | 19:22 | ||
camelia | rakudo-moar 914434: OUTPUT«1134» | ||
FROGGS | okay, that's shorter here | ||
19:23
ren1us left
19:25
SamuraiJack_ left
19:27
bjz left,
bjz joined
19:30
rindolf left,
bjz left,
bjz joined
|
|||
FROGGS | hoelzro: that's my problem: gist.github.com/FROGGS/9efc7831db9f23f1614a | 19:31 | |
hoelzro: you cannot precompile something, that uses Test.pm | 19:32 | ||
19:33
darutoko left
|
|||
firefish5000 | anyone want to test out my latest bashcomp-hackery for p6? I did a lot so I am positive something will break | 19:34 | |
FROGGS | hoelzro: do you really need them to be our-scoped? | ||
hoelzro | yikes o_O | ||
well, I wasn't a fan of output() = $new-filehandle | 19:35 | ||
FROGGS: you can revert that change for now | |||
but it's kind of weird that that doesn't work, isn't it? | |||
FROGGS | well, and our scoped sub will be put into the symbol table... and that means it needs to be serialized | 19:36 | |
and we do not want to serialize file handles me thinks :o) | 19:37 | ||
firefish5000: how can I do that? | |||
firefish5000 | Perl6, panda, rakudobrew, and pandre completion are all here. github.com/firefish5000/tabcomp-p6 | ||
hoelzro | FROGGS: so is the issue that the filehandles are being set at compile time? | ||
FROGGS | hoelzro: yes | ||
hoelzro | I see | 19:38 | |
so this module would also cause such a problem: use v6; module RobTest; my $h = $*OUT; our sub get-h is rw { $h } | |||
moritz | ok, I read a 938k file in ~43ms, and .comb()ed it in 4s. So I can't reproduce the slowness that ren1us slowness either | 19:41 | |
PerlJam | hoelzro: I think only if you pre-compiled it (like Test.pm) | 19:42 | |
FROGGS | firefish5000: perl6 and panda seems to work for me :o) | ||
hoelzro | PerlJam: right | ||
I would assume that the $h = $*OUT would happen at runtime | |||
but maybe my understanding of phases in Perl 6 is lacking | 19:43 | ||
s/maybe/probably/ | |||
FROGGS | no, precompiling that code is not the problem, using it in another program that gets precompiled is | ||
Test.pm makes the filehandles available as symbols, my module uses it and refers to these symbols, and that is the problem | 19:44 | ||
hoelzro | FROGGS: sorry, I didn't follow through | 19:45 | |
FROGGS | np :o) | ||
I can't explain it well enough | 19:46 | ||
hoelzro | but if you took my above code and compiled it, and tried compiling "use RobTest; RobTest::get-h", *that* would blow up, right? | ||
firefish5000 | FROGGS, Thats great! let me know if you run into any errors. | ||
FROGGS | firefish5000: I'll let you know :o) | ||
firefish5000++ # thanks so far | |||
hoelzro: no, that does not blow up | 19:47 | ||
hoelzro | hmm | ||
leont | hoelzro: paste.scsys.co.uk/422373 :-) | 19:48 | |
firefish5000 | FROGGS++ # thanks to you as well | ||
moritz | I've profiled moritz.faui2k3.org/tmp/readall.txt and this is the result: moritz.faui2k3.org/tmp/profile-1410...l#routines | ||
hoelzro | FROGGS: feel free to just revert that change for now; I was using it for Test::Meta, but that's not going anywhere anytime soon as it is =/ | ||
19:48
dolmen joined
|
|||
hoelzro | leont++ # nice! | 19:48 | |
moritz | the first two are 36.6% and 16.7% | 19:49 | |
ListIter.reify and MapIter.reify | |||
FROGGS | leont++ # :o) | ||
hoelzro: okay, then I'll use the power of git revert... | 19:50 | ||
moritz | and, do those exclusive times actually add up to 100%? | 19:51 | |
leont | Testing TAP using TAP, because what else would you use :-) | ||
dalek | kudo/nom: 65db2a6 | (Tobias Leich)++ | lib/Test.pm: Revert "Test.pm - Allow output handles to be queried and modified" This breaks precompilation of modules that use Test.pm. |
||
FROGGS | I hope that was the last thing that got reverted this month | 19:53 | |
ohh, I'm excited: travis-ci.org/rakudo/rakudo/jobs/34848442 | 19:55 | ||
vendethiel- | FROGGS: unwrapping the CI present | 19:57 | |
FROGGS | two of three passed | ||
hoelzro | I take it running the spectest on Travis would just be too much, and exceed the time limit? | 19:59 | |
FROGGS | hoelzro: for sure | ||
hoelzro | bummer | ||
FROGGS | hoelzro: and since we only have a clean run at the day of the release it would not make much sense :/ | 20:00 | |
hoelzro | good point | ||
20:01
mberends joined
|
|||
FROGGS | damn, there is another precomp issue in v5 >.< | 20:01 | |
20:01
daxim left
|
|||
FROGGS | ohh, hold your breath: | 20:01 | |
well, the build passed | 20:02 | ||
I was hoping that status "none" -> "pass" is also a change | |||
PerlJam | sar | ||
tinita | hi everyone | 20:05 | |
would you like to do a mini perl6 hackathon in april 2015? | |||
about 5 to 10 people | 20:06 | ||
ribasushi | tinita++ | ||
tinita | we're preparing the qa hackathon in berlin | ||
and we found a nice venue, but there's space for more than 30 people | |||
xdg suggested, a group of perl6 hackers would fit in | 20:07 | ||
20:14
daxim joined
|
|||
moritz | tinita: is the date fixed already? | 20:14 | |
tinita | moritz: 99%, yes. april 16th-19th | 20:15 | |
moritz | don't we have some Berlin people here? FROGGS maybe? | 20:18 | |
dalek | osystem: 2d9fbaf | moritz++ | META.list: use the "perl6" organization fork of Form |
20:21 | |
leont will be there anyway, but mostly for p5 reasons. I do promote p6 stealing battle-tested toolchain ideas from p5. | 20:22 | ||
tinita | =) | ||
moritz | mathw: ok, I've done the fork of Form into the perl6 organization | 20:24 | |
leont | Then again, I'm doing TAP::Harness in both :-p | 20:25 | |
lichtkind | tinita: welcome in #perl6 :) | 20:32 | |
tinita | hi lichtkind =) | 20:35 | |
hoelzro | if I can rustle up funds to travel, I would happily participate in such a hackathon | 20:36 | |
lichtkind | tinita: how come? | ||
tinita | lichtkind: ? | 20:37 | |
lichtkind | tinita: that your interested in perl6 | 20:38 | |
gtodd | by April 2015 perl6<->perl5 interop will be even more advanced .. :) | ||
lichtkind | panda still crashes on ecosystem.t | ||
tinita | lichtkind: see some lines above ;-) | ||
QA hackathon 2015 might have some additional space for a small p6 hackathon | 20:39 | ||
20:39
kaare_ left
|
|||
lichtkind | in april semester starts | 20:39 | |
tinita | hm | 20:40 | |
hoelzro | hmm...I wonder if spectest would pick up other interesting bugs if it precompiled the scripts and *then* ran them (thinking about FROGGS' bug) | 20:41 | |
tinita | should i maybe write on a mailinglist about the hackathon? | 20:42 | |
tadzik | tinita: count me in | ||
tinita notes tadzik | 20:43 | ||
hoelzro | $1000?! o_O | 20:45 | |
(ORD -> BER) | |||
tinita | where's ORD? | ||
ah, chicago | 20:46 | ||
the price seems about right | |||
hoelzro | seems a bit high to me, since it's six months out =( | 20:47 | |
er, seven | |||
I'm going to keep looking over the next month, see if I can get a better rate | |||
tinita | we are trying to fund some journeys | ||
but that all depends on the sponsors of course... | |||
hoelzro | I don't think I'm important enough to merit funding =P | 20:48 | |
just a fellow enthusiast | |||
tinita | =) | ||
PerlJam | hoelzro: What would you do at the hackathon? | 20:49 | |
hoelzro | PerlJam: I have a *long* list of things I want to do for Perl 6 | ||
PerlJam | hoelzro: maybe the *work* is important enough if you don't think you are. :) | ||
hoelzro | for Rakudo, for the infrastructure, for the tooling, for the module ecosystem | ||
hoelzro .oO( for the Horde ) | |||
tinita | lichtkind: saturday and sunday maybe? | 20:53 | |
20:53
Ven joined,
Ven left
|
|||
tinita | lichtkind: you're not that far away from berlin, right? | 20:53 | |
lichtkind | ~200..300km | 20:54 | |
ribasushi | hoelzro: where do you look? | 20:57 | |
hoelzro | ribasushi: hipmunk | ||
ribasushi | hoelzro: I use kayak for this kind of stuff, seems better for trans-atlantic | 20:58 | |
hoelzro: also 7 month out is too long - airlines usually release the economy packages 5~4 month ahead of time | |||
hoelzro | ribasushi: true; I haven't given up yet =) | 20:59 | |
ribasushi | hoelzro: you are realistically looking at $800 | 21:00 | |
hoelzro | that's about what I figured | ||
I'll have to talk it over with the soon-to-be-wife =) | |||
PerlJam | hoelzro: I bet if you could articulate a narrow enough focus on what you wanted to work on at the hackathon, you could apply for and perhaps receive grant money from TPF. | 21:01 | |
timotimo | moritz: in your mail about the Form module, you accidentally linked to mathw's repository rather than perl6's | 21:03 | |
hoelzro | PerlJam: when do you suppose the deadline for that would be? | 21:04 | |
tinita | it's been 14 years now that i visited chicago... | 21:05 | |
21:05
daxim left
|
|||
ribasushi | tinita: it's still there | 21:06 | |
hoelzro | I can vouch for that =P | ||
tinita | good =) | ||
[Coke] | hoelzro: do you ever meetup with alester? | 21:08 | |
hoelzro | [Coke]: I did before I moved to the NL | ||
he and I keep talking about meeting up, but the upcoming nuptials are making that challenging | 21:09 | ||
I think Oct/Nov will be easier | |||
PerlJam | hoelzro: I dunno, but they have new call for proposals every 2-3 months or so. | ||
leont is strongly in favor of keeping the hackathon QA/toolchain/etc focused, as opposed to a general purpose hackathon | |||
hoelzro | PerlJam: thanks for the tip; I'll dig through my list and see what I can pull up | 21:10 | |
leont: I have ideas in that realm, and I definitely think that area needs work! | |||
leont | m: enum Foo <Bar Baz>; Foo("Bar").say | 21:11 | |
camelia | rakudo-moar 65db2a: OUTPUT«(Foo)» | ||
leont | I was expecting a Bar there, is that a me or is that a bug? | ||
[Coke] | m: m: enum Foo <Bar Baz>; Bar.say | ||
camelia | rakudo-moar 65db2a: OUTPUT«Bar» | ||
lizmat | m: enum Foo <Bar Baz>; say Foo.^enums | 21:12 | |
camelia | rakudo-moar 65db2a: OUTPUT«No such method 'enums' for invocant of type 'Perl6::Metamodel::EnumHOW' in block <unit> at /tmp/1OvBjn8xgr:1» | ||
lizmat | m: enum Foo <Bar Baz>; say Foo.enums | ||
camelia | rakudo-moar 65db2a: OUTPUT«"Bar" => 0, "Baz" => 1» | ||
lizmat | m: enum Foo <Bar Baz>; say Foo<Bar> | ||
camelia | rakudo-moar 65db2a: OUTPUT«(Any)» | ||
lizmat | m: enum Foo <Bar Baz>; say Foo::<Bar> | ||
camelia | rakudo-moar 65db2a: OUTPUT«Bar» | ||
lizmat | m: enum Foo <Bar Baz>; say Foo::<Bar>:p | 21:13 | |
camelia | rakudo-moar 65db2a: OUTPUT«"Bar" => Foo::Bar» | ||
21:18
daxim joined
|
|||
leont | It seems Foo::{"Bar"} is what I'm looking for | 21:18 | |
But the docs suggest Foo("Bar") would also work, at least the way I read them | 21:19 | ||
moritz | m: m: enum Foo <Bar Baz>; say ::Foo::('Bar') | 21:20 | |
camelia | rakudo-moar 65db2a: OUTPUT«Bar» | ||
lizmat | .oO( good that we have labels now :-) |
21:21 | |
lichtkind | tinita: yes weekens should work anyway .. even friday mostly | 21:29 | |
21:30
mberends left
21:31
mberends joined
21:33
virtualsue joined
21:34
treehug88 left
|
|||
dalek | kudo/nom: 3e96fe5 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Refactor Str.lines to be 2.5x faster & support CR For /usr/share/dict/words: from 5.786s to 2.268s With one caveat: strings that have mixed CR and LF line endings, may not come out correctly. For that to work reliably, we would need to have nqp::index support a list of needles to search for. |
21:39 | |
hoelzro | lizmat++ | ||
lizmat | oddly enough, "foo".IO.lines is slower than "foo".IO.slurp.lines | 21:41 | |
leont | slurp might do less syscalls because it tries to read in one go | 21:45 | |
jercos | .lines could potentially be lazy, right? | 21:46 | |
tadzik | it already is | ||
jercos | wheras .slurp.lines should always read the whole file, then split it? | ||
tadzik | correct | ||
lizmat | yes, but the split is lazy | ||
tadzik | oh! neat | ||
jercos | Right, but it would still have to allocate memory for the slurp in the latter case? | ||
at least until someone figures out lazy buffers and async mmap magic | 21:47 | ||
tadzik | yes | ||
timotimo | lizmat: wow, that's quite a bit of work you've done there | ||
lizmat | seems like a function many people will use | 21:48 | |
timotimo | definitely | ||
leont | async mmap magic isn't that hard, it's just segfaulty if the files gets truncated underneath your feet | 21:49 | |
lizmat | anyway, strings like 'a\n\b\r' will not work yet | ||
tadzik | lizmat++ # awesome work | ||
timotimo | aah, it's "foo".IO.slurp.lines you've improved, not "foo".IO.lines | ||
that explains why i didn't see any file reading ops in there %) | |||
lizmat | yes, IO.lines I had already improved | ||
timotimo | i recall that :) | 21:50 | |
when i first saw that commit, i thought the 2.5x was on top of the already improved IO.lines | |||
but this is also very nice to have! :) | |||
and since the code previously didn't handle CR at all, the caveat that mixed cr/lf strings may not work 100% properly is no big problem | 21:51 | ||
dalek | kudo/nom: 3427dee | (Elizabeth Mattijsen)++ | src/core/Str.pm: Slight opt for CRLF checking |
21:52 | |
ast: 2dd48dc | (Elizabeth Mattijsen)++ | S32-str/lines.t: Add some more Str.lines tests |
21:59 | ||
22:01
BenGoldberg joined
|
|||
dalek | kudo/nom: d315ab7 | (Elizabeth Mattijsen)++ | docs/ChangeLog: Mention Str.lines is also optimized |
22:02 | |
22:03
spider-mario left
|
|||
ab5tract | colomon: i updated the pull request with an approach i believe may make sense | 22:06 | |
lizmat | good night, #perl6! | ||
ab5tract | ciao lizmat, and thanks for all the ops :) | 22:07 | |
22:07
Isp-sec left
|
|||
timotimo | gnite lizmat< | 22:09 | |
! | |||
ab5tract | hey i've been meaning to ask | 22:11 | |
what's going on with planet sixperl | 22:12 | ||
timotimo | you can use pl6anet.org/ until they've fixed their site | 22:14 | |
22:16
Px12 joined
|
|||
ab5tract | thanks timotimo! | 22:20 | |
22:24
virtualsue left
22:29
vendethiel- left
22:33
gfldex left
22:37
ajr_ left,
ribasushi left
22:38
ribasushi joined
22:41
Px12 left
|
|||
flussence | .oO( I like this domain name better... ) |
22:42 | |
BenGoldberg | meka.flussence.eu? | 22:52 | |
flussence | the pl6 thing... | ||
BenGoldberg | Oh, I see :) | ||
22:56
dolmen left
|
|||
japhb | lizmat: Why are $CR and $LF defined at two different lexical scopes in 3e96fe5 ? Is that unintentional, or a performance tweak of its own? | 22:57 | |
22:57
Rotwang left
23:03
colomon left
23:09
xenoterracide joined
|
|||
BenGoldberg | Reading the improvement made to Str.chomp, where use of one-char strings is replaced with int codepoints, I can't help but wonder if it can't be generalized. | 23:10 | |
Could the optimizer be taught to look for places where a str variable is always one character long, and make a specialized version of the code? | |||
23:12
Rotwang joined,
xragnar_ joined,
xragnar is now known as Guest89412,
Guest89412 left,
xragnar_ is now known as xragnar
23:17
pmurias left
23:26
ab5tract left
23:30
lichtkind left
23:32
lichtkind joined
23:37
jdv79 left
23:46
lichtkind left
23:49
lichtkind joined,
aborazmeh joined
|