»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:01
musiKk_ left
00:02
pnu joined,
solarbunny joined,
richi235 joined,
ponbiki joined,
clkao left
00:04
rntz joined,
clkao joined
00:07
bakedb joined
00:08
Praise joined
00:14
ribasushi joined
00:18
dalek left
00:19
dalek joined,
ChanServ sets mode: +v dalek
00:21
tadzik joined
00:23
kjs_ joined,
secwang joined
00:27
susmus joined
00:28
sftp joined
00:29
yoleaux joined,
ChanServ sets mode: +v yoleaux
00:32
abaugher joined,
iloveunix joined
00:35
iloveunix left
00:37
iloveunix joined
00:38
BenGoldberg joined
00:39
iloveunix left,
cdg left,
nebuchadnezzar joined
00:46
secwang left
00:48
johndau joined
00:51
pierrot joined
00:52
pierrot is now known as Guest1589
01:06
khw left
01:12
kjs_ left
01:18
MilkmanDan joined
01:22
bpmedley joined
01:29
agentzh joined
|
|||
SmokeMachine____ | hi there! I'm trying to find a documentation showing how to make a class that extends the Hash... do any one here know where can I find it? | 01:32 | |
01:36
BenGoldberg left
|
|||
kid51 | What, specificially, do you mean by "extends"? | 01:37 | |
kid51 notes that the string 'extend' is not found in either doc.perl6.org/type/Hash or doc.perl6.org/language/classtut | 01:38 | ||
SmokeMachine____ | "class Bla is Hash" | ||
kid51 | At the second of the two links above, search for subhead "Multiple inheritance" | 01:39 | |
01:41
khagan joined
|
|||
timotimo | you don't need multiple inheritance | 01:43 | |
sortiz | SmokeMachine____, There are dozens of classes in Perl 6, I doubt there is specific documentation for any particular, If you need to create a hash like new class, I recommend you to read doc.perl6.org/language/subscripts#Custom_types | 01:44 | |
kid51 | Also: perl6intro.com/#_multiple_inheritance | ||
01:44
BenGoldberg joined
|
|||
ugexe | just use monkey typing for everything | 01:45 | |
augment all the classes | 01:46 | ||
timotimo | the custom types part of the subscripts document is excellent for what you need, SmokeMachine____ | ||
who wrote that? :) | |||
01:51
BenGoldberg left
01:52
BenGoldberg joined
|
|||
sortiz | SmokeMachine____, So if you need a hash like class, instead of inherit from Hash, you should implement the Associative role: "class Foo does Associative { ... }" | 01:54 | |
01:54
BenGoldberg left
01:55
BenGoldberg joined
|
|||
sortiz | \o #perl6 | 01:55 | |
timotimo | that's probably a better idea, true | 01:56 | |
otherwise, you can have a class that "has %.storage handles <AT-KEY EXISTS-KEY DELETE-KEY BIND-KEY>" | 01:57 | ||
sortiz | That is a trivial example, yes. | 01:58 | |
02:00
salv0 joined
02:02
abaugher left
|
|||
SmokeMachine____ | thank you all | 02:02 | |
02:02
silug joined
02:07
sno joined,
mtj_ joined
02:09
khw joined
02:14
labster joined
02:16
TEttinger left
02:20
Ben_Goldberg joined
02:21
abaugher joined,
BenGoldberg left
02:23
notostraca joined
02:36
chansen_ left
02:38
chansen_ joined
02:45
vendethiel joined
02:46
agentzh left,
MilkmanDan left
02:47
Ben_Goldberg left,
salv0 left
02:50
labster1 joined
02:52
silug_ joined
02:54
labster left
02:55
nebuchad` joined
02:56
johndau left
02:57
johndau joined
03:00
nebuchadnezzar left,
silug left,
salv0 joined
03:02
notostraca left
03:03
clkao left
03:04
clkao joined
03:05
notostraca joined,
Sgeo left
03:06
Guest1589 left
03:07
rodarmor left
03:08
Spot__ left,
rodarmor joined,
vendethiel left
03:09
BenGoldberg joined
03:10
sftp left,
adu joined
03:11
rodarmor left,
Spot__ joined,
BenGoldberg_ joined
03:12
rodarmor joined
|
|||
BenGoldberg_ | m: my @a; my $x = 1; @a[0] := $x; ++$x; dd @a; | 03:13 | |
camelia | rakudo-moar fb74ab: OUTPUT«Array @a = [2]» | ||
03:15
rodarmor left
03:16
Spot__ left,
rodarmor joined
03:17
Spot__ joined,
parisba left
03:18
parisba joined,
parisba is now known as Guest31991,
telex left
|
|||
BenGoldberg | m: my @a; @a[*] = 'i like'; @a[*] = 'pie'; dd @a; | 03:19 | |
camelia | rakudo-moar fb74ab: OUTPUT«Array @a = []» | ||
BenGoldberg | m: my @a; @a[*+0] = 'i like'; @a[*+0] = 'pie'; dd @a; | ||
camelia | rakudo-moar fb74ab: OUTPUT«Array @a = ["i like", "pie"]» | ||
03:19
rodarmor left
03:20
rodarmor joined
03:22
bakedb left
03:23
bakedb joined,
rodarmor left
03:26
rodarmor joined
03:27
rodarmor left
03:28
rodarmor joined
03:29
Spot__ left
03:30
Spot__ joined
03:33
telex joined
03:38
labster1 left,
kaare_ joined,
kaare_ left
03:39
Herby__ joined
|
|||
Herby__ | Evening, everyone! | 03:39 | |
03:40
cdg joined
|
|||
Herby__ | \o | 03:40 | |
03:45
cdg left
03:47
Sgeo joined,
kaare_ joined
03:50
kaare_ left
03:53
bjz joined
03:55
kid51 left
03:56
kaare_ joined,
noganex_ joined,
kaare_ left
03:57
zpmorgan joined,
BenGoldberg left,
kaare_ joined
03:59
BenGoldberg joined
04:00
skids joined
04:01
kaare_ left,
BenGoldberg left
04:04
[Tux] joined
04:06
kaare_ joined
04:08
kaare_ left
04:12
jnap left,
ggherdov left,
dustinm` left
04:13
xnrand left,
jsimonet1 left,
riatre left
04:14
jnap joined,
kaare_ joined,
kaare_ left
04:15
dustinm` joined
04:16
Spot__ left,
kaare__ joined,
BenGoldberg_ left,
xnrand joined
04:17
riatre joined,
Spot__ joined,
Spot__ left,
Spot__ joined,
ggherdov joined,
dustinm` left,
sQuEE joined
04:18
Herby__ left,
dustinm` joined
04:19
jnap left
04:20
jnap joined,
kaare__ left
04:21
dalek left,
kent\n joined
04:22
dalek joined,
ChanServ sets mode: +v dalek,
clkao_ joined,
clkao left,
clkao_ is now known as clkao
04:25
kaare__ joined,
vytas left,
kaare__ left
04:26
rodarmor left
04:27
rodarmor joined
04:28
rodarmor left,
kaare__ joined,
rodarmor joined
04:29
jsimonet1 joined,
bitmap joined,
susmus left,
jnap left
04:31
jnap joined,
SmokeMachine____ left,
rodarmor left
04:32
rodarmor joined,
polyfloyd left,
clkao left
04:34
ggherdov left,
polyfloyd joined,
kaare_ joined
04:35
rodarmor left,
kaare__ left
04:36
clkao joined,
rodarmor joined
04:37
ggherdov joined,
SmokeMachine____ joined
04:38
zpmorgan left
04:40
zpmorgan joined
04:52
rodarmor left,
ggherdov left
|
|||
dalek | Iish: 2a36f59 | (Salvador Ortiz)++ | lib/DBDish/mysql/ (3 files): mysql: Post oracle merge repairs |
04:54 | |
04:57
labster joined,
ggherdov joined
04:58
polyfloyd left
05:01
Spot__ left
05:02
rodarmor joined
05:04
polyfloyd joined
05:05
Spot__ joined
05:06
vytas joined,
ggherdov left
05:12
ggherdov joined
05:15
telex left
05:16
telex joined
05:22
hoelzro joined
05:28
ggoebel17 joined
05:31
pierrot joined,
pierrot is now known as Guest40236,
rodarmor left
05:33
rodarmor joined
05:34
rodarmor left
05:35
rodarmor joined
05:36
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
05:37
ggherdov left
05:41
tmch joined
05:42
ggherdov joined
05:50
Cabanossi joined
05:51
Spot__ left
05:52
Spot__ joined
05:54
ggoebel17 left
05:56
labster left
05:57
khw left,
ggoebel17 joined
06:00
ggherdov left
06:15
laz78 joined
06:16
ggherdov joined
06:24
aindilis joined
06:30
rodarmor left
06:31
rodarmor joined
06:32
rodarmor left,
rodarmor joined
06:34
jnap left,
jnap joined
06:36
Spot__ left
06:38
Spot__ joined,
Spot__ left,
Spot__ joined
06:40
Guest31991 is now known as parisba_
06:51
polyfloyd left
06:52
jnap left,
molaf joined
06:54
polyfloyd joined
06:56
jnap joined
06:59
CIAvash joined
07:04
boegel joined,
ka joined
07:06
kent\n left
07:07
kent\n joined,
kent\n left,
kent\n joined
07:24
cxreg left
07:25
darutoko joined,
cxreg joined
07:29
cxreg left
07:30
clkao left,
clkao joined
07:31
Spot__ left
07:32
Spot__ joined,
Spot__ left,
Spot__ joined
07:35
BuildTheRobots joined,
BuildTheRobots left,
BuildTheRobots joined
07:37
nebuchad` is now known as nebuchadnezzar
07:42
cxreg joined
07:45
zpmorgan left
07:49
BuildTheRobots left
07:50
BuildTheRobots joined
07:59
rodarmor left
08:02
skids left
08:04
rodarmor joined
08:09
kent\n left
08:14
kent\n joined
08:28
adu left
08:38
CIAvash left
08:45
clkao left
08:47
clkao joined
08:51
khagan left,
khagan joined
08:52
labster joined
08:53
johndau` joined
08:55
johndau left
09:00
johndau` left,
wamba joined
09:07
dalek left
09:08
neilb joined,
dalek joined,
ChanServ sets mode: +v dalek
09:12
rodarmor left,
rodarmor joined
09:15
tmch left
09:16
ggherdov left
09:21
rindolf joined
09:22
ggherdov joined
09:24
pmurias joined,
hoelzro left,
hoelzro joined
|
|||
pmurias | if I want to start creating a p6tidy what's the best way to get hold of the Perl 6 grammar? | 09:24 | |
09:25
k-man joined
09:27
RabidGravy joined,
DarthGandalf joined
09:29
parisba_ left
09:30
parisba_ joined
09:32
Vitrifur left,
llfourn_ joined,
DrForr joined
09:33
Timbus joined,
diakopter joined
|
|||
dalek | osystem: e2a5cd2 | okaoka++ | META.list: Add Algorithm::TernarySearchTree See github.com/okaoka/p6-Algorithm-Ter...SearchTree |
09:35 | |
osystem: 87157e1 | RabidGravy++ | META.list: Merge pull request #161 from okaoka/add-ternary Add Algorithm::TernarySearchTree |
|||
09:36
BuildTheRobots left
09:37
rdleon joined,
parisba_ left,
ggherdov left
|
|||
lizmat | good *, #perl6! | 09:37 | |
09:37
BuildTheRobots joined
09:39
parisba_ joined,
ggherdov joined,
brrt joined
09:41
zostay joined
09:46
laz78 left
09:48
BuildTheRobots left,
Vitrifur joined,
SmokeMachine____ left
09:49
SmokeMachine____ joined,
SmokeMachine____ left,
SmokeMachine____ joined,
BuildTheRobots joined
09:51
crasm joined
09:52
laz78 joined,
parisba_ left
09:53
parisba_ joined,
laz78 left
09:55
laz78 joined
09:58
ely-se joined
10:00
ggherdov left
10:07
dalek left,
brrt left
10:08
ggherdov joined,
brrt joined,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
brrt | ehm, has anybody taken a shot already at reencoding the FOSDEM videos | 10:08 | |
lizmat | good question: sometimes I think I've given up on FOSDEM recording anything altogether :-( | 10:09 | |
brrt | i can actually reencode them, but i'll need to know their approximate lengths | 10:10 | |
and a place to upload them | 10:11 | ||
lizmat | talks were max 50 minutes, I seem to recall | ||
brrt | hmmm | ||
let me check if i can make something work | |||
lizmat | but isn't this really a case of garbage in garbage out? | 10:12 | |
brrt | no | ||
nine_ | brrt: I can provide the webspace. But I'd give the FOSDEM people a bit more time before investing a lot of time myself. | ||
lizmat | I mean, wouldn't you need access to the raw sources? | ||
brrt | videos are OK | ||
its the headers that are bad | |||
10:15
parisba_ left,
BuildTheRobots left
10:16
parisba_ joined
10:22
BuildTheRobots joined
10:23
ggherdov left
10:26
ggherdov joined
10:31
DrForr left,
DrForr joined
|
|||
pmurias | do we have a recommended code formatting guide? | 10:32 | |
llfourn_ | not that I've seen | 10:33 | |
10:33
llfourn_ is now known as llfourn
|
|||
brrt | somehow after a while the videos keep on looping. if i can figure out where that is, i can cut off the video before, and get a well-formed file | 10:36 | |
also, i can crop the video to the exact position of the video stream | |||
10:43
ka left,
ggherdov left
|
|||
dalek | kudo/nom: c70a18e | lizmat++ | src/core/native_array.pm: Make int @a.append(1) 1800x faster by not making it take the long, slurpy array -> flattening route |
10:44 | |
kudo/nom: ced5fbf | lizmat++ | src/core/native_array.pm: Make int @a.append(int @b) 6x faster by not making it take the long, slurpy array -> flattening route |
|||
lizmat | and there's more where that came from ^^^ | 10:45 | |
brrt | \o/ | 10:46 | |
lizmat | .tell jnthn there's something strange with reading a 2.5MB file with slurp: with nqp::readallfh it takes about 80ms, with nqp::readfh with the size of the file as a buffer, it takes 350 msec (like 4x as long) | 10:49 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
lizmat | .tell jnthn I would expect the unicode handling to make things *slower*, but instead it's 4x faster than binary ? | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
nine_ | I now have a working version, where use NativeCall; will use the precomp files created during installation :) Including it's dependencies :) | 10:51 | |
10:51
ggherdov joined
10:52
laz78 left
|
|||
brrt | nine_++ | 10:53 | |
lizmat | nine_ ++ | ||
10:54
MilkmanDan joined
|
|||
RabidGravy | nine_++ # I don't know what that implies but it sounds like it deserves appreciation | 10:55 | |
llfourn | nine_++ | ||
lizmat | takes a few secs of each spectest run for me | ||
10:56
notostraca left
11:00
BuildTheRobots left,
MilkmanDan left
11:01
Spot__ left,
BuildTheRobots joined,
Spot__ joined,
labster left
11:03
labster joined
|
|||
dalek | kudo/nom: d740258 | lizmat++ | src/core/Buf.pm: Rename private method to something more appropriate Also, lose the start position parameter, because we're not going to use it in the foreseeable future. |
11:07 | |
brrt | .tell moritz seems the logging bot doesn't work in #moarvm | 11:09 | |
brrt lunch & | |||
11:09
brrt left
|
|||
yoleaux | brrt: I'll pass your message to moritz. | 11:10 | |
11:10
kjs_ joined
11:12
parisba_ left
11:14
parisba_ joined
|
|||
ely-se | p: say ((0, 1) Xlcm (0, 1)) eqv ((0, 1) X&& (0, 1)) | 11:14 | |
11:14
BuildTheRobots left
|
|||
ely-se | p6: say ((0, 1) Xlcm (0, 1)) eqv ((0, 1) X&& (0, 1)) | 11:14 | |
camelia | rakudo-moar d74025: OUTPUT«True» | 11:15 | |
11:15
ilbot3 joined
|
|||
moritz restarts ilbot | 11:15 | ||
yoleaux | 11:09Z <brrt> moritz: seems the logging bot doesn't work in #moarvm | ||
ely-se | p6: say ((0, 1) Xgcd (0, 1)) eqv ((0, 1) X|| (0, 1)) | ||
camelia | rakudo-moar d74025: OUTPUT«True» | ||
ely-se | :) | ||
lcm is && and gcd is || | |||
moritz | .tell brrt ilbot fixed | ||
yoleaux | moritz: I'll pass your message to brrt. | ||
nine_ | RabidGravy: it means that users will no longer have to wait for precompilation on first run after installing a module. And that we will store much fewer files in ~/.perl6 or scattered around .precomp directories | 11:18 | |
11:19
BuildTheRobots joined
11:25
labster left
11:29
FROGGS joined,
BuildTheRobots left
11:30
BuildTheRobots joined
|
|||
FROGGS | o/ | 11:30 | |
lizmat | FROGGS \o | 11:31 | |
psch | \o | 11:34 | |
11:36
SmokeMachine____ left
11:38
ilbot3 left
|
|||
lizmat | theperlfisher.blogspot.nl/2016/02/f...pt_28.html # DrForr++ | 11:38 | |
11:38
SmokeMachine____ joined
11:39
ilbot3 joined
|
|||
RabidGravy | nine_, that is cool yes :) | 11:43 | |
11:43
Ven joined
|
|||
dalek | kudo/nom: 50f2aaf | lizmat++ | src/core/Buf.pm: Make Buf.EXISTS-POS(1) 7x faster By letting rakudo take care of the unboxing itself, and not creating a variable: this probably allows it to be inlined better, even though the unboxing is now happening twice on the "in range" code path. |
11:45 | |
11:48
andrewalker joined
11:49
ilbot3 left
11:50
ilbot3 joined,
Ven left
11:51
[Tux] left
|
|||
RabidGravy | Perl6++ # so there I was in the shower and I suddenly had the horrible realisation that I couldn't deal with subsets, and it's so easy that it's already sorted | 11:51 | |
11:52
[Tux] joined
|
|||
RabidGravy | I do think however "subset Foo of Int; Foo("10") ' should be made to work if the refinee can do that kind of coercion | 11:53 | |
there's probably a whole bunch of things I haven't considered but I'd say it wouldn't be that difficult to do | 11:54 | ||
11:55
polyfloyd left,
polyfloyd joined
|
|||
dalek | kudo/jvminterop: 7e45d6b | peschwa++ | t/03-jvm/01-interop.t: Correct two tests for multi candidate interop. Between the original creation of this test and now something changed wrt iteration over utf8 object in Perl 6. The updated tests reflect this different behavior. |
11:56 | |
kudo/jvminterop: 7799dbf | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java: Make name => CodeRef pairs show up in the Metamodel. |
|||
kudo/jvminterop: d4b71b7 | peschwa++ | src/vm/jvm/CompUnit/Repository/Java.pm: Remove unused function. |
|||
kudo/jvminterop: 45c205a | peschwa++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java: Clean up and correct JavaHOW field assignments. This adds Java class wrapper methods to .^methods and .^method_table while leaving out generated helpers like e.g. "method/mmd+update/([Ljava/lang/Object;)Ljava/lang/Object;". |
|||
kudo/jvminterop: 6524d45 | peschwa++ | src/vm/jvm/Perl6/Metamodel/JavaHOW.nqp: Provide JavaHOW.parents(), just so nothing complains. |
|||
psch | RabidGravy: subsets as coercers..? | 11:57 | |
psch doesn't understand the intent | |||
lizmat | RabidGravy: doesn't really go towards a .COERCE method., like we have .ACCEPTS ? | 11:58 | |
so Foo(bar) would call Foo.COERCE(bar) | 11:59 | ||
RabidGravy | Well if one has some kind of parser that winds up with something like "sub parse-atom(Str $val, Real $type) { $type($val) }" then that will blow up if infact $type is a coercion | 12:00 | |
so you would have that and then "multi sub parse-atom(Str $val, $type where *.HOW ~~ Metamodel::SubsetHow) { parse-atom($val, $type.^refinee }" | 12:01 | ||
modulo the missing brackets | 12:02 | ||
12:02
Spot__ left,
dalek left
|
|||
RabidGravy | it would be easy-ish to make the latter step happen under the hood rather than blowing up with the useless "cannot invoke this object" | 12:03 | |
12:03
Spot__ joined,
dalek joined,
ChanServ sets mode: +v dalek
12:04
rodarmor left
|
|||
RabidGravy | s/$type is a coercion/$type is a subset/ above | 12:04 | |
psch | how would that deal with coercing values outside of the subset to the refinee? | ||
RabidGravy | sorry I'm not quite sure what you mean | 12:05 | |
ah, it would just blow up when it hits the subsetted target | |||
12:05
rodarmor joined
|
|||
RabidGravy | as it would do anyway | 12:05 | |
12:06
Ven joined
|
|||
psch | ah, so something like < my Foo $x = parse-atom("10", Foo) > dying in the assignment, and not in parse-atom | 12:06 | |
RabidGravy | yea | ||
12:06
Ven left
|
|||
RabidGravy | one could of course check the refinment in the sub but that's un-neccessary | 12:07 | |
psch | hm, feels too late to me, fwiw. as in, < Int("foo") > dies on it's own already, but < Foo("10") > wouldn't | 12:08 | |
but i guess that's mostly in how Subsets work in general | |||
they do kind of work like where constraints on containers, don't they | 12:09 | ||
which means coercion to something that should fit can only complain when it doesn't, and not when it can't be coerced.. | |||
well, it's consistent enough with my understanding at least vOv | |||
12:10
kjs_ left
|
|||
RabidGravy | yeah that would happen anyway with "subset Foo of Int where * < 99; my Foo $a = Int("foo");" | 12:10 | |
psch | right, that blows up in Int(), but replacing "foo" with "100" blows up in the assignment | ||
RabidGravy | right, so "my Foo $a = Foo("100")" would blow up in the assignment too (rather than "cannot invoke this object") | 12:14 | |
12:15
BuildTheRobots left
|
|||
psch | yeah, i think i like that. it frees up module users from knowing the subset refinee (or jumping through the MOP) to coerce | 12:15 | |
RabidGravy | which (for what I'm doing right now,) seems like the right thing | ||
12:18
BuildTheRobots joined
|
|||
RabidGravy | anyhoo, this came to me when I *thought* I had finished this module and was just making the documentation | 12:20 | |
this seems to be a recurring thing with this particular thing | |||
12:24
musiKk_ joined
|
|||
dalek | kudo/nom: 85c18aa | lizmat++ | src/core/Buf.pm: Make Buf.Numeric|Int a few percent faster By removing an additional layer of indirection |
12:25 | |
12:26
Actualeyes joined
|
|||
Woodi | hi #perl6 :) | 12:26 | |
dalek | kudo/nom: 1e33bc5 | lizmat++ | src/core/Buf.pm: Make Buf.bytes about 13x faster By calculating the number of bytes per element at compose time, rather than every time we call .bytes |
12:27 | |
Woodi | m: Real.max.rand; Int.max.rand; # not usefull | ||
camelia | ( no output ) | ||
Woodi | m: say Real.max.rand; say Int.max.rand; # not usefull and visible | ||
camelia | rakudo-moar 50f2aa: OUTPUT«-Inf-Inf» | ||
12:27
parisba_ left
|
|||
psch | m: 5.rand.say | 12:27 | |
camelia | rakudo-moar 50f2aa: OUTPUT«0.180473400462497» | ||
lizmat | Woodi: isn't that a matter of GIGO ? | ||
Woodi | lizmat: GIGO ? | ||
lizmat | m: dd int32.max.rand | 12:28 | |
camelia | rakudo-moar 50f2aa: OUTPUT«-Inf» | ||
lizmat | now *that* is strange | ||
psch | m: say Real.max | ||
camelia | rakudo-moar 50f2aa: OUTPUT«-Inf» | ||
psch | that seems kinda wrong-ish..? :P | ||
lizmat | psch: no, that's correct | ||
sjn | \o | ||
12:28
parisba_ joined
|
|||
lizmat | (been discussed at length before) | 12:28 | |
Woodi: Garbage In Garbage Out | 12:29 | ||
psch | lizmat: oh, right, .max is not MAX_VALUE, is it | ||
? | |||
Woodi | but .rand should find something in the range... | ||
psch | m: say (0..-Inf).elems | ||
camelia | rakudo-moar 50f2aa: OUTPUT«0» | ||
lizmat | m: dd int32.Range.max.rand # must make it a range | ||
camelia | rakudo-moar 50f2aa: OUTPUT«928070625.042826e0» | ||
lizmat | m: dd int8.Range.max.rand # must make it a range | ||
camelia | rakudo-moar 50f2aa: OUTPUT«20.7272851815008e0» | ||
lizmat | m: dd int8.Range.pick | 12:30 | |
camelia | rakudo-moar 50f2aa: OUTPUT«-37» | ||
lizmat | m: dd int8.Range.pick | ||
camelia | rakudo-moar 50f2aa: OUTPUT«125» | ||
lizmat | m: dd uint8.Range.pick | ||
camelia | rakudo-moar 50f2aa: OUTPUT«217» | ||
lizmat | m: dd uint8.Range.pick | ||
camelia | rakudo-moar 50f2aa: OUTPUT«213» | ||
Woodi | ok, use Range... | 12:31 | |
lizmat | which won't work for Int/Real, because they range from -Inf..Inf | ||
m: Int.Range.rand | |||
camelia | rakudo-moar 50f2aa: OUTPUT«Cannot modify an immutable Bool in block <unit> at /tmp/Lt49YFHhCm line 1» | ||
lizmat | m: dd Int.Range.rand | ||
camelia | rakudo-moar 50f2aa: OUTPUT«Cannot modify an immutable Bool in block <unit> at /tmp/ONwLXBqOU0 line 1» | ||
lizmat | hmmm... LTA error | ||
please someone RT that | |||
lizmat goes outside for a few hours... | |||
Woodi | how I can get long long int ? :) | 12:32 | |
psch | that's int128? | ||
Woodi | possible... | ||
thanx lizmat, psch | |||
psch | ah, wikipedia says long long int is at least 64 bits | 12:34 | |
so int64 | 12:35 | ||
which is probably better, 'cause we don't have int128 :) | |||
Woodi | not in one piece :) | ||
12:36
parisba_ left
12:37
keix joined
12:38
rindolf left
12:39
parisba_ joined
12:40
pmurias left,
rodarmor left
12:42
rodarmor joined
12:47
ely-se left
|
|||
moritz | not yet | 12:49 | |
12:51
lizmat_ joined,
baest_ joined
|
|||
RabidGravy | lizmat, looks like I'm going to have to benchmark some of the Audio::* modules before and after these changes - there is a lot of Buf -> Array -> CArray shuffling (in vaious orders) going on :) | 12:51 | |
12:53
autarch left,
Amnez777 left,
gregf__ left,
mathw left,
pederindi left,
orbus left,
frew left
12:54
lizmat left
12:55
lnx joined,
Woodi joined,
domidumont joined,
garu joined,
mathw joined,
tadzik left,
ashleydev joined,
rudi_s joined,
gtodd joined,
f3ew joined
12:56
ruoso joined,
arnsholt joined,
SHODAN joined,
cdg joined
12:57
jnap left
12:58
sjohnsen joined
12:59
espadrine joined
13:00
domidumont left,
Fleurety joined,
domidumont joined,
kid51 joined,
rvchangue joined
13:01
jnap joined
13:05
BuildTheRobots left,
Amnez777 joined,
espadrine left
13:06
anshin joined
13:07
frew joined,
musiKk_ left
13:08
pederindi joined,
orbus joined
13:09
gypsydave5 joined,
xxpor joined,
gregf__ joined
|
|||
sortiz | I'm going to push a somewhat massive cleanup in DBIish, but the only user visible change is that now the FooDriver.Version method returns a Version, not a Rat. Internally I remove the 'Role' word from the long-names of the roles. | 13:09 | |
13:10
BuildTheRobots joined,
dalek left,
Spot__ left
13:11
rodarmor left,
parisba_ left,
jnap left
13:12
mindos left,
daxim joined,
boegel left,
polyfloyd left
13:13
autarch joined,
cdg left,
lsm-desktop left
13:14
cdg joined,
[Tux] left,
hoelzro left
13:15
SmokeMachine____ left
13:16
polyfloyd joined,
[Tux] joined,
jnap joined,
dalek joined,
ChanServ sets mode: +v dalek,
lsm-desktop joined,
rodarmor joined
13:17
BuildTheRobots left
13:18
SmokeMachine____ joined
13:19
boegel joined,
Amnez777 left
|
|||
RabidGravy | sortiz++ # sounds great, and loving your enthusiasm for cleaning up DBIish :) | 13:19 | |
13:19
mindos joined,
BuildTheRobots joined
13:20
Spot__ joined
|
|||
sortiz | RabidGravy, Pushed now, but dalek was dead, I'm waiting for travis-ci results. :) | 13:21 | |
13:22
hoelzro joined,
Amnez777 joined
13:25
Amnez777 left,
Amnez777 joined,
Amnez777 left,
Amnez777 joined
13:26
tadzik joined,
parisba_ joined
13:28
domidumont left
13:31
Actualeyes left
13:33
timrs2991 joined
|
|||
dalek | rl6-most-wanted: 43a7d09 | (Tom Browder)++ | most-wanted/modules.md: add new module; correct WIP location of Geo::Ellipsoid |
13:36 | |
rl6-most-wanted: f6686bb | tbrowder++ | most-wanted/modules.md: Merge remote-tracking branch 'upstream/master' Conflicts: most-wanted/modules.md |
|||
rl6-most-wanted: 7a74d61 | tbrowder++ | / (5 files): Merge remote-tracking branch 'upstream/master' |
|||
rl6-most-wanted: dd6ff6c | tbrowder++ | most-wanted/modules.md: add memoize wanted for core like Perl 5 |
|||
rl6-most-wanted: 0ce5428 | (Tom Browder)++ | most-wanted/modules.md: Merge pull request #20 from tbrowder/master Add memoize as most wanted (for core) |
|||
timotimo | o/ | 13:37 | |
sortiz | \o timotimo | ||
13:38
Actualeyes joined
13:39
Skarsnik joined
|
|||
lucs | m: class Foo { has $!n; method N { $!n }; }; my $foo = Foo.new(42); say $foo.N; # How do the 「new」 and/or 「BUILD」 methods need to be written for this to work? | 13:40 | |
camelia | rakudo-moar 1e33bc: OUTPUT«Default constructor for 'Foo' only takes named arguments in block <unit> at /tmp/nDbehF3wjV line 1» | ||
13:45
tmch joined
13:47
burnersk joined
13:51
Psyche^_ joined
|
|||
sortiz | m: class Foo { has $!n; multi method new(Int $n) { self.new(:$n) }; submethod BUILD(:$!n) { }; method N { $!n }; }; my $foo = Foo.new(42); say $foo.N | 13:52 | |
camelia | rakudo-moar 1e33bc: OUTPUT«42» | ||
sortiz | lucs, ^^^ | 13:53 | |
timotimo | lucs: you could also use github.com/LLFourn/p6-AttrX-InitArg | ||
ugexe | memoize like core? isnt that `cached` trait? | 13:54 | |
lucs | timotimo: Oh, neat. Thanks! | 13:55 | |
timotimo | the cached trait is experimental, because we couldn't find a design that doesn't suck :) | ||
psch | doc.perl6.org/language/objects#Obje...nstruction is the docs, which looks pretty good from here | ||
lucs | psch: I wasn't able to figure it out from reading that :/ | 13:56 | |
psch | oh right, your specific case is missing there... | ||
it only says "please don't use the bless shortcut" | |||
13:57
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
lucs | sortiz: Er, thanks too! (misread who had supplied the first solution) | 13:58 | |
timotimo | "don't use the bless shortcut", eh? | ||
psch | timotimo: well, paraphrase... :) | ||
13:58
cfedde joined
|
|||
psch | as in, < self.bless(:$x, :$y) > is shorter than writing new with pos params and BUILD instead | 13:59 | |
timotimo | ah | ||
13:59
cdg left
|
|||
timotimo | for subclassability | 13:59 | |
psch | but that is documented to screw with... right | ||
14:02
sftp joined,
squain joined
14:04
xinming left
14:05
sftp left,
musiKk_ joined
|
|||
psch | ttps://gist.github.com/anonymous/8a57e90a0499511f1ea8 | 14:06 | |
hrm, no "h" :/ | |||
gist.github.com/anonymous/8a57e90a0499511f1ea8 # for the extra lazy vOv | |||
timotimo | i am extra lazy | 14:07 | |
psch | that doesn't explain the need for BUILD with private Attributes though | ||
i'll check if that's mentioned somewhere else... | |||
14:10
sftp joined
|
|||
psch | well, no idea if that diff is actually factual. as in, i don't know if redispatching to Any.new is actually *not* considered poor practice | 14:10 | |
timotimo | well, redispatching to self.new is nice, because you also get "newer" new methods that way | ||
14:12
brrt joined
|
|||
brrt | moritz: thanks :-) | 14:12 | |
yoleaux | 11:15Z <moritz> brrt: ilbot fixed | ||
14:12
xinming joined
|
|||
psch | docs are hard, lets write jvm bytecode /o\ | 14:14 | |
14:15
buharin joined
|
|||
brrt has recoded 3/11 FOSDEM videos | 14:16 | ||
interestingly, making them much smaller | |||
14:17
xinming left
|
|||
buharin | hey | 14:18 | |
I want to see video | |||
but it appears to be broken | |||
video.fosdem.org/2016/h2214/ | |||
timotimo | yeah, it is :( | 14:20 | |
14:22
xinming joined
14:23
araujo joined
|
|||
buharin | greate | 14:23 | |
;s | |||
timotimo | this year we have an additional source for video recordings | ||
i.e. we brought our own recording equipment in addition | |||
14:25
Ven joined
14:26
musiKk_ left,
sortiz joined
|
|||
Skarsnik | hm, there is no POSIX stuff in the core? | 14:27 | |
nine_ | nope | ||
14:27
BuildTheRobots left
|
|||
buharin | DrForr, hey are you here? | 14:27 | |
timotimo | that'd be ... kind of bad :) | ||
Skarsnik | so I need a module to translate this: strftime "%A, %B %d at %H:%M", localtime($chapter{time}); | ||
? | |||
timotimo | strftime isn't posix, is it? as in, other OSes ship that in their libc, too? | 14:28 | |
DrForr | buharin: Yeah. | ||
buharin | DrForr, could you fix your blog? | ||
RabidGravy | it is part of the POSIX spec however | ||
DrForr | What's broken about it? | ||
RabidGravy | but yes you would need a module, I think there is one | ||
14:29
crasm left
|
|||
RabidGravy | but it would be relatively easy to make if there isn't | 14:29 | |
buharin | DrForr, you should separate your code | ||
14:29
BuildTheRobots joined
|
|||
buharin | it is unreadable | 14:29 | |
Skarsnik | I mean, there is no equivalent in perl6 core with datetime? | ||
14:30
cdg joined
|
|||
RabidGravy | isn't that what formatters are for? | 14:30 | |
buharin | Skarsnik, hey | ||
timotimo | we really need that prancer blog thing :) | 14:31 | |
RabidGravy | github.com/supernovus/perl6-datetime-format | ||
timotimo | it'll be the first blog software to do things the right way. finally! | ||
Skarsnik | ah thx | ||
The localised month/week day name is important ^^ | 14:32 | ||
DrForr | buharin: Do you have a plugin you can recommend? I tried a few but none seemed to work well. | ||
buharin | DrForr, no sorry | ||
DrForr | Also I added <code/> around the blocks but it didn't seem to do anything worthwhile. | 14:33 | |
RabidGravy | does the old "stick it in github gist and use the embed" thing work in whatever you are using? | 14:34 | |
DrForr | timotimo: Yeah, what I'm probably going to do once I get the core to work properly is refactor the h*ll ot of PearlBee and use that. | ||
timotimo | refactor pearlbee into perl6? ;) | 14:35 | |
DrForr | RabidGravy: I've got a helluva lot of snippets, but I can try. | 14:36 | |
RabidGravy | DrForr, before I forget I have two questions regarding prancer, a) is there scope for dispatch based on other than request path? (e.g. based on some authorisation?) | ||
14:36
cdg left
|
|||
Skarsnik | buharin, hello | 14:37 | |
RabidGravy | and b) I'd like to plug in the websocket thingy, should that just work? | ||
DrForr | RabidGravy: Not at the moment, right now I need to work around some OO issues, once that's solved I do intend to tackle those issues. | 14:38 | |
Skarsnik | did you write an async webscoket client RabidGravy ? x) | ||
timotimo | we have a websocket client and server in the ecosystem, btw | 14:39 | |
Skarsnik | it's not async | ||
timotimo | OK | ||
buharin | Skarsnik, hi | ||
RabidGravy | the server is | ||
Skarsnik | hm, I can't have 2 whenever block in a react one? | 14:40 | |
timotimo | of course | ||
you can, i mean | |||
RabidGravy | yeah you can have as many as you want | 14:42 | |
DrForr | OKay, found a formatter I'm happy with. | 14:43 | |
ugexe | whats a suitable internal name for a an IO abstraction layer that works with IO::Paths, http urls, git urls, etc that does both write (.spurt, POST, push) and read? i just used `Fetch` before, but that doesnt work now that i want to add writes | ||
timotimo | virtual file system? | ||
ugexe | ah thats better | ||
timotimo | that's what gnome/glib calls it | ||
ugexe | that'll work. i didnt want to give the name to give the impression it followed the IO:: interfaces | 14:44 | |
timotimo | mhm | ||
RabidGravy | m: react { whenever Supply.interval(1) { say "one second"; if $_ == 5 { done; }}; whenever Supply.interval(2) { say "two second" }} | 14:45 | |
camelia | rakudo-moar 1e33bc: OUTPUT«one secondtwo secondone secondtwo secondone secondone secondtwo secondone secondone second» | ||
14:46
rindolf joined
|
|||
Skarsnik | Oh, nvm it's an error somewhere else | 14:47 | |
DrForr goes through the last of his Kriek. | 14:50 | ||
14:51
Gruber joined,
Cabanossi left,
Woodi left,
yoleaux left,
cfloare left
14:52
tmch left,
Grrrr left,
musca left
14:53
daxim left,
Praise left
|
|||
RabidGravy | Mmm Kriek | 14:53 | |
14:53
Praise joined,
daxim joined,
psch joined,
sergot joined
14:54
Woodi joined,
ranguard joined,
cfloare joined
|
|||
rudi_s | Hi. Is this expected? | 14:54 | |
m: "test".split("x", :bla); | |||
camelia | ( no output ) | 14:55 | |
rudi_s | I'd expect an error because :bla is not a valid parameter. | ||
(In my case I tried :split_empty which should've been :split-empty.) | |||
14:55
Sgeo left
|
|||
psch | rudi_s: design.perl6.org/S12.html#Interface_Consistency | 14:56 | |
14:56
Cabanossi joined,
Sgeo joined
|
|||
rudi_s | That sounds awful. | 14:57 | |
It makes calling methods totally unsafe with no safeguard against typos. | |||
14:58
musca joined,
huf joined
|
|||
ugexe | thats one reason why BUILD is promoted over new id imagine | 14:59 | |
but ive seen the typo thing happen in rakudo itself | |||
15:00
gensym joined
|
|||
rudi_s | What makes it even worse IMHO is that for subs the check is performed which is inconsistent and causes false expectations. | 15:00 | |
But I guess it's too late to fix that. | |||
ugexe | it probably enables all sorts of other goodies though | 15:01 | |
15:01
Ven left
|
|||
DrForr | RabidGravy: Only picked up two bottles on the way back from FOSDEM. Wanted to find Frambois actually but this is close enough. | 15:02 | |
rudi_s | Well, the check works for subs. | ||
timotimo | aye, because subs don't have anything like subclassing going on | 15:03 | |
RabidGravy | there are ways to check if you really are that worried about it, but as it has been re-hashed several times I'll leave it as an exercis | 15:04 | |
psch | m: class A { method foo(:$h) { say ":h handled" } }; class B is A { method foo(:$u) { say ":u handled"; nextsame } }; B.foo(:u, :h) # this breaks without interface consistency | ||
camelia | rakudo-moar 1e33bc: OUTPUT«:u handled:h handled» | ||
15:04
rindolf left
|
|||
rudi_s | Yeah. Still would've been nice to get this additional check. | 15:05 | |
DrForr | buharin: Updated with the new formatter. Does this work better? | ||
If so I'll go back and do the same with the previous posts. | |||
And then figure out how to translate pod6 markup into that format so I don't have to wear out my fingers editing. | 15:06 | ||
rudi_s | RabidGravy: Was that for me? | 15:07 | |
RabidGravy | yes | ||
15:07
neilb_ joined
|
|||
timotimo | moritz: when trying to "submit a talk proposal" to GPW2016, i get a raw "Forbidden" error page; is that because i'm too late to submit? | 15:07 | |
rudi_s | RabidGravy: Could you give me a pointer please. | 15:08 | |
15:08
tmch joined
|
|||
DrForr | Could a few of you hit theperlfisher.blogspot.ro/2016/02/f...pt_28.html just to give feedback on the code blocks? | 15:09 | |
15:10
neilb left,
neilb_ is now known as neilb
|
|||
rudi_s | RabidGravy: perl6advent.wordpress.com/2015/12/...d-methods/ <- this? | 15:10 | |
RabidGravy | class Foo { method bar(:$f, *%f where *.keys.elems == 0) { say "f" };}; Foo.bar(:f); Foo.bar(:f, :b) | ||
timotimo | *punch* | 15:11 | |
DrForr: i find it annoying that the website layout is narrow, but the code blocks have horizontal scrolling | |||
i'm in favor of narrow-ish website layouts, though | |||
rudi_s | RabidGravy: Thanks. | ||
RabidGravy | but that other thing would work fine too with some adjustment to taste | 15:12 | |
llfourn | DrForr: I think you just try and move the archive from the right to the top so the content can take more space | 15:13 | |
(somehow :P) | |||
DrForr | Yeah, I hadn't actually tried the layout at a full window on my monitor, and simply (foolishly) assumed that the center column would take the remainder of thespace. | 15:14 | |
But I was mainly after the readability of the code blocks, as I've had at least one person comment on the blog about it being unreadable. Is that at least better to look at? | 15:15 | ||
(I didn't have a problem with how the code looked before, but the readers are the arbiters of taste here, not me.) | |||
llfourn subscribes to DrForr's blog | |||
they are more readable than your previous posts | 15:16 | ||
but the extra space would make them even better | |||
timotimo | well, the code isn't colored, which makes it a bit more strenuous to look at, imo | ||
llfourn | yeah, I wonder if there is an easy way to color it | 15:17 | |
timotimo | on the other hand, there's people who code completely without highlighting | ||
llfourn | is there a way to use GH markdown code block rendering on your own blog? | ||
15:18
neilb left
|
|||
llfourn | sleep & | 15:18 | |
15:19
vendethiel joined
|
|||
DrForr | Dunno. I'm going to reformat the rest of the postings this way and worry later, this appears to be an improvement. Little steps... | 15:19 | |
Skarsnik | hm, what is the oposite of push for Array? | 15:22 | |
DrForr | If it's not intuitively obvious I'm something of a novice at this. | ||
pop() | |||
Skarsnik | I mean, that put at the head, not the tail | 15:23 | |
RabidGravy | unshift | ||
Skarsnik | Oh, thx | ||
RabidGravy | or prepend | ||
Skarsnik | Na prepend is not the same than push | ||
if you do @tab.prepend(%hash) it flat the hash | 15:24 | ||
RabidGravy | yes, like append | ||
lucs | What's the P6 equivalent of P5's s/.../.../r ? | 15:27 | |
RabidGravy | what does /r do? | 15:28 | |
15:28
QORRiE joined
|
|||
geekosaur | instead of modifying the string in place, the modified string is the return value of the s///r | 15:28 | |
RabidGravy | yeah, got it | 15:29 | |
m: say do given "hshshshs" { S:g/h/g/ } | 15:31 | ||
camelia | rakudo-moar 1e33bc: OUTPUT«gsgsgsgs» | ||
lucs | Oh, capital S, eh. Nice. | 15:32 | |
RabidGravy | or | 15:33 | |
m: my $a = "hshshshs"; say $a.subst(/h/, "g", :g); say $a | |||
lucs | Thanks. | ||
camelia | rakudo-moar 1e33bc: OUTPUT«gsgsgsgshshshshs» | ||
RabidGravy | S/// only works on $_ though | 15:34 | |
lucs | Ah, okay. | ||
15:39
zakharyas joined
15:43
espadrine joined
|
|||
DrForr | Updated blog. | 15:44 | |
15:46
brrt left
15:59
kjs_ joined
16:00
araujo left
16:09
MilkmanDan joined
16:17
agentzh joined
16:18
Guest40236 left
16:21
sno left
16:22
espadrine left,
espadrine_ joined,
pierrot joined
16:23
pierrot is now known as Guest89071
|
|||
buharin | DrForr, work | 16:23 | |
DrForr | Uh, how about tomorrow? :) Or, do you mean that works? | 16:26 | |
buharin | DrForr, its working!!! | 16:27 | |
DrForr | Aha, great. | ||
16:29
_dolmen_ joined
16:39
khw joined
|
|||
moritz | timotimo: dunno; I'll have to ask the others | 16:39 | |
16:39
sno joined
|
|||
moritz | timotimo: have you signed up as a participant already? | 16:40 | |
timotimo | moritz: is the submission deadline already over? | ||
maybe i've missed the time for that, too? i can't find a button for that | |||
moritz | timotimo: yes, signup period is over | 16:41 | |
timotimo | >_< | ||
moritz | and the venue is full | ||
"Registration is possible until February 17th 2016" is what the front page says | |||
timotimo | urgh | 16:42 | |
why do i procrastinate stuff so often? >_< | |||
moritz | :( | ||
timotimo | can i sneak in during the hackathon, though? :P | ||
ugexe | m: my $buf = Buf.new(1..5); my @arr = $buf.contents; say @arr[0..*-3]; say $buf.subbuf(0..2); say $buf.subbuf(0..*-3); | 16:43 | |
camelia | rakudo-moar 1e33bc: OUTPUT«(1 2 3)Buf:0x<01 02 03>This type cannot unbox to a native integer in block <unit> at /tmp/yv2cH96U7O line 1» | ||
moritz | timotimo: yes | ||
timotimo | cool! :) | 16:44 | |
i'll definitely do that, then | |||
moritz | \o/ | ||
16:45
espadrine_ left
|
|||
dalek | kudo/nom: 95069c8 | lizmat++ | src/core/Buf.pm: Buf.push|unshift shouldn't take lists Because it doesn't work with int @arrays either, as should not be flattened, and they cannot be stored unflattened. Please use .append (for push) or .prepend (for unshift) instead. |
16:47 | |
tadzik | timotimo: I managed to register and sneak in just 3-4 days ago, try :) | ||
there's a note somewhere to email the organizers and ask for a spot | |||
16:47
neilb joined
|
|||
tadzik | procrastination's not that bad! :) | 16:48 | |
dalek | c: 0f11a13 | (Simon Ruderich)++ | doc/Language/subscripts.pod: Language/subscripts: add "or" as alternative in :exists example |
||
c: 9f71be2 | (Simon Ruderich)++ | doc/Type/DateTime.pod: DateTime: mention "epoch" in .posix |
|||
timotimo | what, really? | ||
tadzik | yep | ||
timotimo | you didn't happen to get a 2-person-room by accident? :P | ||
tadzik | I did, but not by accident :) | ||
timotimo | ah, you're already sharing, eh? | ||
tadzik | yea | 16:49 | |
timotimo | OK, let's see ... | ||
tadzik | with sergot, who's also coming | ||
timotimo | cool! | ||
16:49
kurahaupo joined,
kurahaupo left
|
|||
sjn | hey, cool that you're coming, tadzik :) | 16:49 | |
tadzik | yep :) | ||
sjn has finished reading the course material he borrowed from tadzik | 16:50 | ||
tadzik | haven't seen y'all Perl people a while | ||
16:50
pmurias joined
|
|||
sjn | tadzik: how's the job situation? anything signed yet? :) | 16:50 | |
pmurias | is there still a way to make <.foo> capture? | 16:51 | |
tadzik | sjn: yep, stuff got signed recently :) | ||
sjn | tadzik: cool! grats! :D | ||
pmurias | tadzik: what event are you attending? | ||
tadzik | pmurias: GPW | ||
in Nurmberg | |||
timotimo | pmurias: you can <bar=.foo> | ||
sjn is in Nürnberg now, actually | 16:52 | ||
it's a really nice city | |||
tadzik | hah, still living nearby upcoming Perl events? :) | ||
sjn | yeah :) | ||
pmurias | timotimo: there used to be a way to turn of capturing without changing the regex | ||
sjn | well, I'm missing quite a few too :-P | ||
pmurias | timotimo: AFAIR using a modifier | 16:53 | |
timotimo | i don't remember that, sadly | ||
sjn has a small appartment just down the street from the GPW venue | |||
16:54
zakharyas left
16:55
_dolmen_ left
|
|||
sjn should invite for some drinks here during GPW... hmmm | 16:56 | ||
tadzik | hmmm | ||
sjn is off to find a cafe in the city to work on his presentation | |||
dalek | ast: 0e4496a | lizmat++ | S03-operators/buf.t: Fix tests wrt 95069c8480466ff25fbc78 |
16:59 | |
TreyHarr1 | Need a doc pointer... I see a couple very complicated ways to go about it, but is there a straightforward way to to interrogate a compilation unit for its definitions? In other words, point at a p6 file and get back a list of module foo, class bar, sub MAIN? | 17:01 | |
17:02
frew left
|
|||
Skarsnik | hm | 17:02 | |
kjs_ | good afternoon #perl6. So I’m doing data analysis on ~10,000 records, stored in JSON files, parsing them and storign them into an SQLite database. This works fine mostly, but after having processed about half of them, my script slows down significantly, and my only guess is that this is due to pressure on the memory allocation. Is this a known issue? | 17:04 | |
timotimo | when you load the compunit, you get back the stashes that make up its symbols | ||
that's the EXPORT:: business and such | |||
TreyHarr1 | I'm just writing a bunch of boilerplate for tests, and it would be nifty to refactor it so I don't repeat myself, but I need to write a scanner instead. If I can easily ask, "for each .pm file in dir, does it have a class matching this criteria? If so, run these tests against it" | ||
timotimo: yup, that was the first way I found that looked complicated. | |||
timotimo | it's not so bad | ||
TreyHarr1 | the other was using the phasers | ||
timotimo: k, i'll give it a shot. thanks. | 17:05 | ||
Skarsnik | kjs_, maybe, try to trace the memory print of the process? | 17:08 | |
17:08
rindolf joined
|
|||
rudi_s | I have a function which takes an array (sub foo (@x)) and I want to pass the combination of two arrays (e.g my @a = .., my @b = ...; my @c = |@a, |@b; foo(@c)). What is the idiomatic way to do that in perl6? | 17:08 | |
(Without a third variable.) | |||
TreyHarr1 | hmm... running 'perl6' with no arguments is the way to start the REPL, right? It used to work, certainly since I installed this rakudo, but now it hangs forever. (Not even responsive to typing some code and EOF'ing, have to ^C to get out.) | 17:09 | |
Skarsnik | foo((|@a, |@b)) does not work? | ||
timotimo | TreyHarr1: you may have a perl6 process in the background that potentially has the CompUnitRepo locked, so it can't try to load Linenoise or Readline? | ||
just a guess | |||
TreyHarr1 | timotimo: a good one. lol, yes, a 'panda look' that I'd forgotten was a panda look and was treating as a normal shell :) | 17:11 | |
i was trying to run it inside itself, in fact. | |||
rudi_s | Skarsnik: It does, thanks. I was just curious in which ways this could be done and which is the shorted/best/recommended. | 17:12 | |
(I didn't think about (..) and would've used foo([|@a, |@b]).) | |||
kjs_ | Skarsnik: ok. I suppose one would do that with valgrind? I’ve got 2 types of data: the first set is about 100 files each with 100 entries, and the second is 10000 files each with one entry. The second one seems to be easier to process than the 100 files with 100 entries each. But maybe that’s due to my perl scripts. | 17:15 | |
Skarsnik | just look like at top | 17:16 | |
17:16
llfourn left
|
|||
Skarsnik | or with ps | 17:16 | |
17:16
llfourn joined,
frew joined
|
|||
lizmat_ | m: Buf.new; say now - INIT now # wow, the first time we create a Buf is *very* expensive! | 17:19 | |
camelia | rakudo-moar 95069c: OUTPUT«0.3498912» | ||
Skarsnik | duh | ||
it's not just a 'simple' malloc? | 17:20 | ||
timotimo | m: say now - INIT now | ||
camelia | rakudo-moar 95069c: OUTPUT«0.0016866» | ||
timotimo | o_O | ||
lizmat_ | no, it isn't | ||
17:20
lizmat_ is now known as lizmat
|
|||
lizmat | it's punning the role into a class | 17:20 | |
after that, it's ok | |||
timotimo | oh | ||
lizmat | feels to me, this punning should probably be done during the setting already | ||
timotimo | what happens if we just ... yeah | ||
lizmat | *compiling the setting | ||
lizmat tries | 17:21 | ||
Skarsnik | m: role R {}; R.new; say now - INIT now | 17:22 | |
camelia | rakudo-moar 95069c: OUTPUT«0.0023991» | ||
lizmat | Buf and Blob are no small roles | 17:23 | |
17:23
domidumont joined
|
|||
timotimo | i wonder what part actually takes all that time | 17:24 | |
Skarsnik | why are they role and not class? | ||
timotimo | because Blob and Buf are parametric | 17:25 | |
japhb | Skarsnik: Because they can parameterize on element size | ||
Skarsnik: e.g. buf8 | |||
lizmat | timotimo: is there some punning method in the MOP that I could use ?? | ||
timotimo | i think make_pun exists | 17:26 | |
17:29
TreyHarris joined
|
|||
lizmat | m: Buf.^make_pun; say now - INIT now # the expensive part | 17:30 | |
camelia | rakudo-moar 95069c: OUTPUT«0.3362993» | ||
17:31
skids joined
|
|||
timotimo | i wonder how many parts that has | 17:33 | |
lizmat | well, adding it to the mainline of the setting, makes compilation die in pretty mysterious ways | 17:34 | |
timotimo | ohgen/moar/m-Metamodel.nqp:2586 | 17:35 | |
hm. a profile of that shows it's spending about half-half in "specialize" and "apply", gen/moar/m-Metamodel.nqp:2586 | |||
^- that's specialize | |||
gen/moar/m-Metamodel.nqp:2734 - this is apply | |||
and most of compare_multi_sigs is actually spent inside "gistperl" | 17:36 | ||
gen/moar/m-CORE.setting:19074 - gistperl | |||
lizmat | what's being gisted ??? | ||
timotimo | when we make a pun, do we actually have to be comparison of multi functions? | ||
lizmat | timotimo: no idea... | 17:37 | |
my question is really: why isn't this done during core setting, so that we have ready to use punned roles after startup ? | |||
timotimo | you mean only for roles that have default values for all their parameters? | 17:38 | |
lizmat | I can't imagine a punned role taking so much more space that it will slow down bare startup | ||
well, I would argue all of the possibilities should probably be punned | |||
but at least Buf or Blob | 17:39 | ||
timotimo hunts through the call graph | |||
lizmat | *and* | ||
timotimo | the eqv operator on Signature uses gistperl | 17:41 | |
lizmat | this would at least shave 33 x .34 = 10 CPU seconds off the spectest | ||
timotimo | it may be a good idea in general to improve the eqv operator on Signature | 17:42 | |
lizmat | timotimo: ok, will take that on first | ||
17:43
vendethiel left,
vendethiel- joined
|
|||
timotimo | i'm not sure that's really correct, but apparently gistperl takes up 95.7% of the total time of Buf.^make_pun | 17:44 | |
it's potentially already easy enough to add a fast-fail for different arities, for example | |||
lizmat | yeah, ok | ||
17:47
_dolmen_ joined
|
|||
timotimo | hm, no. | 17:47 | |
maybe all the invocations to eqv are actually coming out true | |||
timotimo checks that | |||
17:47
Actualeyes left
|
|||
lizmat | looks like Signature.ACCEPTS(Signature) could use some speedup as well | 17:50 | |
timotimo | oh my. they all come out False | ||
17:52
colomon joined
|
|||
timotimo | so with a check for .count equality i can get 59 eqv's to abort early, and 127 still do the full check | 17:57 | |
17:58
zpmorgan joined
|
|||
timotimo | sadly that only takes the run time on my end from 0.46 to 0.33 | 17:59 | |
so more work is clearly needed | |||
ugexe | however i handled bufs with net::http is nearly twice as slow with HEAD than 2015.12 :x | 18:00 | |
skids | Coincidentally I was working on a patch for the metamodel signature comparator. | ||
timotimo | oh! | 18:01 | |
lizmat: ^- skids has something for us! | |||
:P | |||
skids | Not for eqv. | ||
The thing below it. | |||
timotimo | oh | ||
18:01
guru joined,
vendethiel- left
|
|||
timotimo | well, that just uses gistperl + eq + gistperl | 18:01 | |
so whatever you had in mind for eqv would likely also apply there | 18:02 | ||
18:02
guru is now known as Guest20938
|
|||
lizmat | ugexe: are you saying Buf handling slowed down since 2015.12 ? | 18:02 | |
skids | gist.github.com/skids/b7db42fc7d029e5c0f9e was the first, 6.c-compatible part of that. | ||
18:03
Guest20938 left
|
|||
timotimo | how much faster is that for Buf.^make_pun? | 18:03 | |
skids | Well, I don't have two rakudos to compare. | 18:05 | |
timotimo | mhm, fair enough | ||
how fast does Buf.^make_pun run on your machine? | |||
skids | eqv should probably do likewise but not use the :where thing | ||
timotimo | i find it strange that you have +sa.params over and over again | 18:06 | |
skids | Yeah I was trying to avoid making that a Routine. | ||
Though, I don't know why. | |||
(Can't use return or last otherwise) | 18:07 | ||
timotimo | routine? | ||
skids | Or can't use return. Was also trying to avoid last to avoid control exceptions. | ||
timotimo | yeah | ||
but you misunderstand me | 18:08 | ||
18:08
TreyHarris left
|
|||
timotimo | why is \sap and \sbp in the inner loop and why not +sap or even put the result of +sap into another variable? | 18:08 | |
18:09
mst left,
mst joined
|
|||
lizmat | so what is exactly the function of set_multi_sig_comparator ? | 18:10 | |
is that the code that determines if two signatures are identical ? | |||
timotimo | it registers a comparison function that the metamodel can use | ||
yeah, looks like | |||
skids | It is newer than most of the metamodel, hasn't been fully promulgated yet. | ||
timotimo | using your code makes Buf.^make_pun run in 0.21s | 18:11 | |
skids | timotimo: yeah I hadn't PR'd that yet because it needed some massaging, just got it working, so probably could use some massage. | ||
lizmat | and how does this relate to Signature.ACCEPTS(Signature) ? | ||
18:11
TreyHarris joined,
buharin left
|
|||
skids | timotimo: is that better, or worse (just logged in, haven't backlogged much) | 18:12 | |
timotimo | Parameter.perl is now at 59.96% inclusive time | ||
that's two times better than what we had in the beginning | |||
i.e. takes half as long | 18:13 | ||
18:14
espadrine_ joined
|
|||
skids | What I've been trying to psych myself up to do is extract the logic from is_narrower/sort_dispatchees_internal into that comparator. But that will be 6.c-breaking. | 18:15 | |
timotimo | inside Parameter.perl, 25% time is spent inside a/the calls to .map, 11.8% from .sink, 8.72% of time spent inside the curly block following the first # XXX | ||
another 8.6% is spent inside .ACCEPTS of a Regex | 18:16 | ||
18:16
pmurias left
|
|||
Skarsnik | really eqv just compare the gist? xD | 18:16 | |
timotimo | the curly block from the else-branch of "if $name" is next at 7.37% | ||
after that is much smaller fish | 18:17 | ||
lizmat | timotimo: did you work on Parameter.perl already ? | ||
skids | Skarsnik: yes, which is a bit hacky and causes some issues, but you know, "first ake it work" :-) | ||
timotimo | no, just analyzing it so far | ||
18:17
espadrine_ is now known as espadrine
|
|||
timotimo | hm, so the most expensive part is the type captures part | 18:18 | |
rebuilding takes quite a little while on my laptop :| | 18:19 | ||
skids | One note is that in sort_dispatchees_internal a hash is built for each sig, mostly because not all the methods from Parameter.pm are available at that point, but it has the effect of caching results for future comparisons. | ||
timotimo | but i just guarded that for with a "if nqp::elems($!type_captures)", since type captures are rather rare | ||
ugexe | lizmat: in some cases, yes (at least i dont think another change is causing it). looking at --profile it seems to be twice as many allocations. lots of new calls to `perl`, `sink-all`, `new`, `sequential-map`, and `push-exactly`. or should i look at something else? | 18:20 | |
18:20
yoleaux joined,
ChanServ sets mode: +v yoleaux
|
|||
timotimo | what question was that an answer to? | 18:20 | |
lizmat | ugexe: ok, that's caused by the punning then: there are many more methods/candidates now for punning | ||
timotimo | ah, interesting | 18:21 | |
lizmat | about the slowdown in net::http since 2015.12 | ||
timotimo | so we'll be improving the performance of that code with this work right here | ||
lizmat | yes | 18:22 | |
timotimo | i really wonder why the type_captures method boxes an Int for the index of the type captures | ||
it's not like we support more than 2^64 type captures on a single parameter? | |||
just got answer from the GPW admins; i'm too late for GPW this year ;( | 18:23 | ||
TreyHarris | is file glob just gone from Perl 6? | ||
timotimo | it's in the ecosystem | ||
TreyHarris | timotimo: thanks, didn't see it for some reason | 18:24 | |
timotimo | :) | ||
18:25
zakharyas joined
|
|||
timotimo | with that for loop guarded by an if, i'm down to 0.18s | 18:25 | |
RabidGravy | woah, that's epic poddery, nearly half this module is POD now :-\ | 18:28 | |
better get it out the door | |||
timotimo | i'm not entirely sure why the check for "Callable" looks like $type ~~ / ^^ Callable >> /, but i guarded it with a $type.starts-with | ||
lizmat | .oO( podding along ) |
||
timotimo: nqp::istype(,Callable) should be fine ? | |||
timotimo | i think the type is probably a string? | 18:29 | |
skids | timotimo: for Callable[Int] etc I think. | ||
lizmat | ah, then starts-with should be ok :) | ||
TreyHarris | how about fork/exec? I'm not finding it in ecosystem :) | ||
18:29
dwarring joined
|
|||
TreyHarris | (it's probably there too, I'm just getting the wrong name...) | 18:29 | |
timotimo | ah | ||
mst | TreyHarris: that's non-portable, you can get it from your OS via NativeCall | ||
timotimo | i can compare $!nominal_type instead | 18:30 | |
mst | TreyHarris: however, the first question is, why do you -want- to fork? | ||
perl6 already has concurrency, and it already has process running | |||
Skarsnik | Fork does not work great x) | ||
18:30
vendethiel joined
|
|||
TreyHarris | mst: completeness. i'm trying to port one of my cpan modules and get it testing correctly before making it more p6-y | 18:30 | |
Skarsnik | mst, I needed fork to run code that leak | ||
timotimo | m: "Callable[Foo]".index("[").say | ||
camelia | rakudo-moar 95069c: OUTPUT«8» | ||
timotimo | m: "CallableFoo".index("[").say | ||
camelia | rakudo-moar 95069c: OUTPUT«Nil» | ||
mst | I fully expect we'll end up with an exec() eventually, because that exists on win32 as well | 18:31 | |
but fork() is *n?x specific, so using NativeCall to get it from the OS is, if anything, more elegant design-wise than having it supported directly as such | |||
TreyHarris | mst: sorry, exec is what I need, I just said "fork/exec" because that's like one word to an old Unix hack like me :) | ||
Skarsnik | I mean what are the other way to start another process? | ||
mst | TreyHarris: what do you need exec for? | ||
Skarsnik | not just a thread | ||
TreyHarris | mst: "Perl, stop execution immediately and replace yourself with this other program" | 18:32 | |
mst | TreyHarris: so, basically, at this point you do the moral equivalent of 'exit system(...)' | ||
skids | TreyHarris: maybe use NativeCall? | ||
mst | or try and NativeCall in exec(), which I'm probably going to end up doing at some point myself | ||
18:32
_dolmen_ left
|
|||
TreyHarris | mst: no, exec() is a specific thing, because it frees all resources the prior process is using. doing a system() postpones releasing those resources until the system() finishes, even if it's the last thing in the program. | 18:33 | |
mst | TreyHarris: please don't treat me like an idiot when I'm trying to help you. | 18:34 | |
timotimo | making the thing inside the check for [Foo] faster didn't matter at all, seems like. | ||
mst | I know what exec does. that's why I gave you both options. | ||
skids | .oO(exec might be kinda fugly from an evalserver-like setup) |
18:35 | |
mst | skids: yes. but in the long run we need it anyway, because leaving an unnecessary extra process lying around is pretty gross | ||
OTOH for the moment it *does* work, basically | |||
18:36
buharin joined
|
|||
timotimo | skids: do you think we can figure out a nice fast-fail condition for the equivalence of parameters in our signature comparator? | 18:36 | |
TreyHarris | mst: i'm sorry, i wasn't trying to, i've done enough coding interviews of supposed "system programmers" to know that the fork/exec process is surprisingly esoteric even to non-idiots. my apologies for misunderstanding and for implying you didn't understand. | 18:37 | |
timotimo | skids: actually, Parameter has an ACCEPTS, is that potentially right for our use case? | ||
skids | timotimo: Both will be a bit tediuous, but harder for 6.c copatibility than not. Haven't considered ACCEPTS. | 18:38 | |
timotimo | hm | ||
18:38
espadrine left
|
|||
mst | TreyHarris: yeah, so, NativeCall will totally let you get at the systemcall | 18:38 | |
skids | For 6.c you basically have to go by what gistperl does. | ||
timotimo | anyway, anything that makes this faster would be helpful :) | ||
lizmat | Set($other.named_names) (<=) Set($.named_names) # pretty bad, because it first builds to entire Sets | 18:39 | |
mst | TreyHarris: while I was resisting the urge to try and set you on fire with my mind, I also came up with an alternative, which is to do an 'exit system()' of a program that forks, execs your real thing in the child, and exits the parent, but of course then you lose the exit code and have the usual other problems | ||
timotimo | perhaps we have to look at this from a higher vantage point. like, what exactly does the metamodel expect the comparator to consider equivalent and what not? does that have to be 1:1 the same as eqv on two Signature objects? | ||
mst | TreyHarris: also, sorry, I assumed since you had perl5 code you'd probably already know I tend to work on fairly low level stuff - I mean, I did do most of the design for e.g. p3rl.org/Daemon::Control - but I do understand that lots of people don't get it. saying "yes, but I want the exec() resource freeing behaviour" is what I'd do, then the people that know will go "yeah, I know" like I did, and if you get a blank look, ... | 18:41 | |
... *then* you explain | |||
timotimo | lizmat: good point; also the eqv we've had so far wouldn't be just subsets, it'd require both to exactly match | ||
ugexe | fwiw its in the s29 design doc as `runinstead` | ||
mst | bah. I'm doing the "debug your communications protocol as well as your problem" thing again. hope it's clear I mean it constructively :D | ||
skids | timotimo: unless we want eqv to be True for tiebreakables, the two will have to be different. | ||
TreyHarris | mst: Yes, it is. Again, I really do apologize. To put it in context, I'd say that at Google, folks we brought in for onsite SRE interviews had a 50% hit rate on being able to explain fork/exec, and at that point 99% of applicants had already been weeded out. (I've learned that pretty much anything you'd think is a litmus test for a good system programmer, a bunch o good system programmers can't pass.) | ||
skids | timotimo: What needs to happen eventually is in sort_dispatchees_internal, obscured a bit by that fact it is bootstrap code. | 18:43 | |
(and sort_dispatchees_internal could probably use some improvements as well) | |||
timotimo | skids: tbh i don't feel up to wrangling the metamodel right now ... i'm trying to work up the courage to improve spesh by finding out what makes it not analyze my "white noise" example code properly | ||
TreyHarris | mst: Yes. Sorry, I didn't /whois you until now and I'm terrible with remembering initials. We were both in the kilt squad at YAPC CMU '09 and had several meals together. | 18:44 | |
mst | I thought it was you, that was part of why I was so confused :P | ||
skids | timotimo: if I can manage to get my head clear enough today I'll try to PR something, no guarantees, I've been feeling down all week. | 18:45 | |
mst | TreyHarris: anyway. those are your options for the moment. note that if you do get exec via NativeCall going I'd love to see the resulting code, because I'm going to be wanting to do that sometime soon myself | ||
timotimo | no worries, i appreciate any effort! :) | ||
otherwise, you can let lizmat work on it instead/in addition | 18:46 | ||
mst | because currently the shim scripts that are used to invoke installed scripts via modules suffer from exactly the suckage you describe because they're doing 'exit system(...)' | ||
so the path forwards seems to me to be 'get a cross-platform NC exec, use it in those for a bit to shake it out, then petition to add it for 6.d' | |||
TreyHarris | mst: i'll let you know but since it was a marginal feature to start with I only brought it up now because I was surprised I couldn't find an implementation. It just happened to be the next thing in the test file I was porting. | 18:47 | |
jnthn | m: use NativeCall; sub execv(Str $path, CArray[Str] $args) is native returns int { * }; execv('/usr/bin/uname', CArray[Str].new('foo', Str)); say 'not here'; | ||
yoleaux | 10:49Z <lizmat> jnthn: there's something strange with reading a 2.5MB file with slurp: with nqp::readallfh it takes about 80ms, with nqp::readfh with the size of the file as a buffer, it takes 350 msec (like 4x as long) | ||
camelia | rakudo-moar 95069c: OUTPUT«Linux» | ||
yoleaux | 10:49Z <lizmat> jnthn: I would expect the unicode handling to make things *slower*, but instead it's 4x faster than binary ? | ||
jnthn | That's how to call exec with NativeCall, btw | ||
lizmat | jnthn: I think we found out what that was: Buf.^make_pun | ||
jnthn | lizmat: OK. I'm headachey and sick today, so don't know I'll be figuring out much... :( | 18:48 | |
lizmat | jnthn: we're figuring out many a things atm... | ||
any suggestions would be welcome... | |||
jnthn | lizmat: Does the binary path copy all it gets into another buffer though? | ||
lizmat | jnthn: yeah, but the delay is in the first occurrence of Buf in a run | 18:49 | |
mst | TreyHarris: well, sure, which is why I suggested you did 'exit system(...)' | ||
TreyHarris: because I figured it was probably a marginal feature | |||
lizmat | m: Buf.^make_pun; say now - INIT now # that's a lot of CPU there | ||
camelia | rakudo-moar 95069c: OUTPUT«0.3490704» | ||
lizmat | jnthn: ^^^ | ||
mst | TreyHarris: I assumed the exec 101 lecture meant it was important :P | ||
jnthn | Sure, but it's amortized | ||
timotimo | ohey jnthn :) | ||
jnthn | m: Buf.^make_pun for ^10; say now - INIT now | ||
camelia | rakudo-moar 95069c: OUTPUT«2.9059790» | ||
jnthn | Uh...it should be, at least. | 18:50 | |
timotimo | hah | ||
well, .^make_pun probably doesn't cache the result | |||
jnthn | m: Buf[].^make_pun for ^10; say now - INIT now | ||
camelia | rakudo-moar 95069c: OUTPUT«2.89013790» | ||
timotimo | whereas whatever uses .^make_pun probably does | ||
jnthn | Oh, wait... | ||
m: Buf[].^pun for ^10; say now - INIT now | |||
camelia | rakudo-moar 95069c: OUTPUT«0.334182» | ||
jnthn | Right :-) | ||
That's the one that should be used :) | |||
mst | TreyHarris: also, damnit, I suppose that means I'll actually have to write the code myself at some point ;) | 18:51 | |
18:51
yoleaux left
|
|||
dalek | kudo/nom: 2098186 | lizmat++ | src/core/Buf.pm: Make Blob.AT-POS a few percent faster And hopefully better inlineable |
18:52 | |
kudo/nom: 4fbedcc | lizmat++ | src/core/Range.pm: Fix typo Found when doing Int.Range.rand. Instead of generating an LTA error, this now hangs because it is building the infinite list. This probably needs some extra attention :-) |
|||
18:53
espadrine joined
|
|||
TreyHarris | mst: like I said, I was porting feature-for-feature, and I got to the one that used exec(). So it was important insofar as doing something other than exec() would no longer be porting feature-for-feature. | 18:53 | |
18:53
vendethiel left
18:54
cdg joined
18:55
cdg left,
cdg joined
|
|||
timotimo | should we optimize .map on ().list ? | 18:56 | |
as in: special-case? | |||
jnthn | Don't think the code to do it is worth the bloat or, worse, slowing every other case down for. | ||
18:57
tmch left
|
|||
timotimo | 'k | 18:57 | |
18:57
chrstphrhrt joined
|
|||
timotimo | in this case, which is Parameter.perl, it's probably worth looking at nqp::elems() of $!type_captures | 18:58 | |
flussence | was runinstead() removed from the spec? not sure why we need to wait for 6.d to fix it. | ||
19:02
roryrjb joined,
zakharyas left
|
|||
TreyHarris | jnthn: thanks, that works. a stringifiable list-to-CArray[Str] wrapper is easy enough, but is the idiomatic way to do it by putting coercion logic in the sub exec (Str $path, *@args) which calls execv? | 19:02 | |
sorry, *conversion* logic. not *coercion* | |||
thinko | |||
b/c a coercion milti could work as well, no? | 19:03 | ||
jnthn | TreyHarris: If you stick it in a module then yeah, you could write a sub that does the coercion, named it exec, and export *that* rather than the native sub itself. | ||
mst | that was roughly what I was expecting to be the sensible approach | ||
19:04
_dolmen_ joined
|
|||
mst | given perl6 being perl6 couldn't you put the 'sub execv is native' inside the 'sub exec' and not need a module? | 19:04 | |
jnthn | mst: Yes | ||
mst: But also subs are lexical anyway | |||
mst: So hiding the native one from the outside world is as simple as not exporting it. | |||
mst | you're thinking the wrong way round | 19:05 | |
jnthn | Oh, if you don't want a module at all, just to stick it in a script | ||
mst | I was thinking that I wouldn't want to have to wrap a block around the outside of the 'sub exec' definition to avoid leaking the execv out into the script | ||
jnthn | Yes, then it makes sense. | ||
mst | exactly. the words 'and not need a module' were a clue :P | ||
jnthn | What, I'm meant to read??? | 19:06 | |
TreyHarris | jnthn: but mst is right that I probably should just eliminate the feature, as I don't want to port a pure perl 5 module into an impure perl6 module. | ||
mst | TreyHarris: given the way NativeCall works, I would argue it isn't really impure as such | 19:07 | |
this is not like Inline::C or XS | |||
TreyHarris | mst: guess I need to look at exec's p5 implementation. i'm guessing it's not portable just by doing jnthn's incantation alone. | 19:08 | |
jnthn | May not quite work out on Windows without a tweak | ||
dalek | osystem: 67735d7 | RabidGravy++ | META.list: Add XML::Class see github.com/jonathanstowe/XML-Class |
19:10 | |
jnthn | grmbl, headache returns...bbl, or tomorrow | ||
RabidGravy | there, that took longer than anticipated but what larks | ||
Skarsnik | ah nice module | 19:11 | |
RabidGravy | I wouldn't say it's perfect but it should get some tire kicking | 19:12 | |
dalek | kudo/nom: bc0070f | lizmat++ | src/core/Mu.pm: Make BUILDALL/BUILD_LEAST_DERIVED about 10% faster Benchmarked on a class with 3 public attributes not being initialized |
19:20 | |
TreyHarris | whee... looking at p5. exec is defined separately for each OS. so i guess unless you already have an OS dependency, defining it inline would be a bad idea. | ||
japhb | lizmat: Do you have any of your benchmark code (that you used to time all these changes you've been making over the past weeks) laying around? It would be nice to get them into perl6-bench ... | 19:22 | |
lizmat | japhb: I basically used one liners, run them at least 3 times with 10 second intervals, run one "empty" loop for a baseline, and do the math | 19:23 | |
japhb: so, no, I don't really have code as such :-( | |||
will keep that in mind in the future, though | 19:24 | ||
$ 6 'class A { has $.a; has $.b; has $.c }; for ^10000 { my $a = A.new } | |||
$ 6 'say (285 - 132) / (299 - 132)' | 19:25 | ||
0.916168 | |||
mst | lizmat: turning that into a small shell script (or whatever) called 6bench would likely be pretty trivial | 19:27 | |
19:27
espadrine left
|
|||
mst | I mean, FVO trivial, but still | 19:27 | |
19:27
espadrine joined
19:28
vendethiel joined
19:30
vike joined
19:31
espadrine_ joined
19:32
espadrine left
19:33
kent\n left
19:42
vike left,
_dolmen_ left
19:45
azawawi joined
|
|||
azawawi | hi | 19:45 | |
19:45
rindolf left
|
|||
RabidGravy | rarr! | 19:46 | |
azawawi | regarding "is cached" trait doc.perl6.org/routine/is%20cached , does it have a cache eviction strategy? | ||
moritz | nope | ||
japhb | lizmat: perl6-bench has a *lot* of one-liners, and handles empty loops, and can do any subset of the tests in the run, and does the "run N times" work, and ... :-) | ||
19:47
roryrjb left
|
|||
mst | it's actually 'is memoized', but with a stupid name. | 19:47 | |
japhb | mst: github.com/japhb/perl6-bench | ||
mst | but 'cached' is more familiar to people so | ||
19:47
vike joined
|
|||
azawawi | moritz: we can override it right? | 19:47 | |
lizmat | japhb: point taken :-) | ||
azawawi | mst: yup en.wikipedia.org/wiki/Memoization | ||
19:48
laz78 joined
|
|||
lizmat | azawawi: it's experimental as it is, anyways :-) | 19:48 | |
mst | azawawi: you can write your own trait with an eviction strategy, yes | 19:49 | |
azawawi | mst: thanks | ||
19:49
vendethiel left
|
|||
mst | lizmat: actually, I sort of wonder if 'is cached' should take (a) an args mangler, the way memoize does, (b) a cache constructor | 19:49 | |
then it would both fit it's name and be configurable | |||
lizmat | mst: I implemented it as it was vaguely specced | 19:50 | |
azawawi | lizmat: could you please link its design spec? | ||
lizmat | S06:2081 | 19:51 | |
azawawi thinks it will give him something to do it this evening :) | |||
19:51
geraud joined
19:53
colomon left,
kid51 left,
kid51 joined,
autogen joined
|
|||
azawawi | lizmat: thanks ... design.perl6.org/S06.html#is_cached | 19:54 | |
mst | lizmat: right. I've been tending to regard the synopses as "it must do the things they say, but there's no reason you can't do a few extra bits as well" | ||
that's going to be completely necessary for CUR over time, certainly | 19:55 | ||
but then again, in general I don't really write code where an unbounded cache is useful, and I can see a bunch of scripty uses where it would be | |||
lizmat | mst: the extra bits are what gives me the top position in most reverted :-) | ||
20:01
kjs_ left
20:02
kjs__ joined
20:04
tharkun left,
tharkun joined,
domidumont left
20:06
darutoko left
20:07
nowan joined
|
|||
japhb | lizmat: Just shows you're taking a proper amount of risk taking ... and also that roast is a bit thin still. :-) | 20:08 | |
*you're doing | |||
20:09
raiph joined
|
|||
japhb left his tea in the freezer to cool a little too long. Yipes that's cold. | 20:09 | ||
lizmat just has a fresh cuppa (hot) | 20:14 | ||
Hotkeys | Just leave it in a bit longer and have a teasicle | 20:15 | |
20:16
vendethiel joined
20:18
[Sno] joined,
zakharyas joined
20:19
sno left,
notostraca joined
|
|||
japhb | Hotkeys: not entirely a bad idea ... except the part about needing the caffeine now. :-) | 20:21 | |
20:21
kjs__ left
20:22
musiKk_ joined
20:27
MadcapJake joined
|
|||
lizmat | japhb: I seem to have misplaced the benchmark repo... what was it again? | 20:33 | |
mst | 19:47 < japhb> mst: github.com/japhb/perl6-bench | 20:35 | |
lizmat | mst++ | ||
20:37
TreyHarr1 joined
20:38
vendethiel left
20:39
TreyHarris left,
tmch joined
|
|||
lizmat | japhb: so, if I only have a P6 benchmark, I could just leave the perl5 tag empty ? | 20:40 | |
japhb | lizmat: Yeah, exactly | ||
The perl5 and nqp entries are only there for when you want to do cross-language comparisons. | 20:41 | ||
lizmat | what does the "scale" parameter mean | ||
? | |||
moritz | lizmat: the harness tries to run each benchmark with a number the determines the amount of work to be done | 20:42 | |
lizmat: that is, number of iterations, length of strings to be regexed, stuff like that | |||
lizmat: that's the scale | 20:43 | ||
japhb | lizmat: Just checked, you already have a commitbit, btw | ||
moritz | so that stuff like quadratic string concatenation becomes obvious | ||
lizmat | so 1<<7 means number of iterations to be done ? | ||
japhb | lizmat: That's the starting value. | 20:44 | |
It will automatically ratchet it up until the runtime of the test is long enough to get out of the noise | |||
(plus a bit more to see the scaling effects) | |||
And I tended to do it in binary, because the default ratcheting behavior is to double the scale each run. | 20:45 | ||
dalek | kudo/nom: add25c7 | lizmat++ | src/core/Parameter.pm: Make Parameter.sigil about 20x faster |
||
japhb | But there's nothing intrinsically correct about that scaling factor; it just seemed like it would be a good default. | ||
20:46
raiph left
|
|||
lizmat | so, the benchmark for this was: $ 6 'sub a(\) {}; my $p = &a.signature.params[0]; for ^100000 { my $a = $p.sigil }' | 20:46 | |
japhb | (There's also a linear scaling mode for tests like man-or-boy or ackerman that have their own super-linear scaling based on an opaque parameter.) | ||
20:47
vendethiel joined
|
|||
lizmat | japhb: how would you put that in microbenchmarks.pl ? | 20:47 | |
japhb | hold on, lemme pull that | ||
up | |||
20:47
FROGGS left
20:48
raiph joined
20:49
azawawi left
|
|||
japhb | lizmat: something like gist.github.com/japhb/f15b1a9779d8e89ddf4c perhaps | 20:52 | |
RabidGravy | gah, one more module and I will have made 40 - I may have to pause for a while before it gets embarassing | 20:53 | |
japhb | I wonder if we should add tags for test authors so that people can see how much a particular person's favorite test cases were improving | 20:54 | |
RabidGravy: s/embarassing/awesome/ | 20:55 | ||
lizmat | japhb: are the tags that we don't use (like perl5 and nqp in this case) really necessary ? | 20:56 | |
japhb | They were mostly there as a subtle reminder to people to make cross-language testing possible wherever it made sense. | ||
20:56
telex left
|
|||
japhb | ISTR I fixed the bug where it would be unhappy if the key wasn't even there, but I'm not 100% positive. | 20:57 | |
lizmat | perhaps it would make more sense if there were a separate file for perl6 benchmarks only ? | ||
20:58
telex joined
|
|||
japhb | There is a set of autogenerated tags for tests, so you can choose tests via e.g. --tests-tagged=has-lang:perl6 | 21:00 | |
lizmat: For tests that are not one-liners, there are separate directories for each language. | |||
21:01
yoleaux joined,
ChanServ sets mode: +v yoleaux
|
|||
japhb | I collected these in one big file largely because I didn't want to repeat all the meta data, and because I wanted to reduce the chance of a refactoring making different language implementations no longer comparable. | 21:01 | |
these == microbenchmarks | |||
lizmat | still not seeing how I would indicate the empty loop case | 21:04 | |
japhb | To be clear, you may never see a case of `perl6 => undef,` in microbenchmarks.pl, because then what's the point? There shouldn't be anything you can express in NQP that you can't just as easily express in Perl 6, and for Perl 5 only tests ... well, write a Perl 6 version. :-) | ||
lizmat | in my example: $ 6 'sub a(\) {}; my $p = &a.signature.params[0]; for ^100000 { my $a }' | ||
japhb | test "empty" | 21:05 | |
21:05
chrstphrhrt left
|
|||
japhb | The compile and constant overhead times of your test will be checked with a special run of SCALE = 0. | 21:05 | |
There's also a for_empty, IIRC | |||
yep | 21:06 | ||
Which is specifically an empty for loop | |||
lizmat | well, but in the above example, if the empty loop case takes 400 msecs, and the one with a payload does 450 msecs | ||
and before my change, with payload did 500 msecs | 21:07 | ||
japhb | lizmat: After subtracting startup, compile time, and constant overhead? | ||
lizmat | you would see only a 20% improvement, rather than 2x | ||
well, the amount it would take to do everything except the very thing you're benchmarking | |||
japhb | I'm saying, how much time does this take: 'sub a(\) {}; my $p = &a.signature.params[0]; for ^0 { my $a }' | 21:08 | |
21:08
Shozan joined,
nowan_ joined
|
|||
lizmat | so you would include the overhead of the loop in the benchmark ? | 21:09 | |
japhb | lizmat: So if (say) that took 200 ms, then perl6-bench would by default compare (400-200) = 200 versus (450-200) = 250ms | ||
But yes, that's why there are variants of tests as while, for, etc. | |||
21:09
xxpor left,
nowan left,
SHODAN left
|
|||
japhb | Because whether for ^N {...} is super-optimized changes between Rakudo versions | 21:09 | |
21:09
xxpor joined
|
|||
japhb | At one point, it was wicked fast. | 21:10 | |
(I haven't checked recently if it still was.) | |||
But I *do* see your point. | |||
lizmat | it is again, afaik | ||
japhb | The biggest remaining feature unimplemented in perl6-bench is being able to compare e.g. for_empty and for_foo_bar directly. | ||
I ran out of tuits to do that comparison (which would go in analyze, with options to enable it available in bench) | 21:11 | ||
But all the raw data you need should be in the timings files, which are ... verbose. | |||
21:12
BenGoldberg joined
|
|||
japhb | Still, you're right that currently perl6-bench doesn't get allow you to easily claim "operation X is N times faster" but rather "operation X running in a for loop is M times faster" | 21:12 | |
lizmat | atm I'm simply trying to quickly add more tests, without actually running perl6-bench myself | 21:13 | |
if that's ok with you | |||
jnthn | There are daily automated runs on perl6-bench at www.moarvm.org/measurements/perl6-bench/ fwiw | ||
*of | 21:14 | ||
japhb | A legacy of it being used to compare the overall performance of compiler builds, rather than improvements to a single Callable in the setting. | ||
lizmat: It's more than OK. I'm ecstatic! :-) | |||
lizmat++ | |||
21:15
_dolmen_ joined
|
|||
jnthn | Though for some reason viewing the reports in whatever Chrome I currently have is incredibly slow... | 21:16 | |
timotimo | jn is back :) | ||
feeling a little better? | |||
jnthn | Well, I had some dinner, and the headache receded a bit... | ||
Brane still feels like it's a big heap of mush. | 21:17 | ||
21:17
rvchangue left
|
|||
japhb | jnthn: The JS code got modified a few times since I last touched it, I think. I haven't gone back and checked that it's being JS-compiler-friendly still. | 21:17 | |
dalek | rl6-bench: 04d82d3 | lizmat++ | microbenchmarks.pl: Add micro-benchmark for Parameter:D.sigil |
||
21:17
krunen joined
|
|||
jnthn | At the moment, those daily runs I'm doing spit out a Perl5/NQP/Rakudo comparison | 21:17 | |
21:17
Celelibi left
|
|||
jnthn | Any suggestions on a good no-maint-needed thing I can do for comparing Rakudo versions? | 21:18 | |
I guess I could run a Christmas release vs. today... | |||
japhb | jnthn: history mode? | ||
jnthn | japhb: Yeah, I guess that. :) | 21:19 | |
21:19
tinita joined,
stmuk joined
|
|||
jnthn | japhb: I guess it has no smarts along the lines of "the last month's release"? | 21:19 | |
I can calculate that in whatever scripting I do though, I guess. | 21:20 | ||
japhb | Unfortunately, it only knows about things that can `git rev-parse` | ||
jnthn | OK | ||
21:20
zakharyas left
|
|||
japhb | You can certainly use a moving tag or something if you like. | 21:20 | |
21:21
ChoHag_ is now known as ChoHag
|
|||
jnthn | Well or I can just plot Christmas, HEAD, and 20XX.XX by just talking the current year/month and subtracting one month. | 21:21 | |
It'll lag the actual monthly releases a little, but still be useful for comparing things before the next monthly :) | 21:22 | ||
japhb | We might also want to consider tagging a particular set of tests as "version 123 of the perl6-bench test suite", so that if you're watching the overall performance means, it doesn't change as the test list changes. | ||
Yeah, makes sense. | |||
21:22
Celelibi joined
21:23
rvchangue joined
|
|||
japhb | If you use a particular rev of perl6-bench itself over time, then you don't have to rerun old tests, you can just keep checking out a new latest (by date) and creating more timings files for it. | 21:24 | |
Analyze can handle a fair number of timings files, but again, don't know how the HTML will handle that much data. | |||
21:24
breinbaas joined
21:27
bjz left
21:29
musiKk_ left
|
|||
jnthn | japhb: Yeah. At the moment I have to manually git pull perl6-bench itself, but the rest is automated | 21:29 | |
21:29
guru joined
21:30
guru is now known as Guest98765
|
|||
japhb goes back to trying to decide whether it's time to just write a clean re-implementation of Evject etc., and if so, what exactly he wants to accomplish with that. | 21:32 | ||
vendethiel | Evject? | 21:34 | |
japhb | vendethiel: gist.github.com/jnthn/da27ded3fbf06df7c54a | ||
(I have a local hacked up version) | 21:35 | ||
Guest98765 | I'm getting an odd error message from REPL about some code. Will I get flamed if I post the sequence? | 21:36 | |
japhb | Oh, that reminds me: jnthn, I recently had to stop using OO::Monitors with InMemoryEventStore, because the wrapped methods weren't invokable during domain processing. | ||
21:37
shadowpaste joined
|
|||
japhb | I don't know if you'd ever gone back and tried that old code (with s/use Monitor/use OO::Monitors/ of course) since Christmas. | 21:37 | |
Guest98765: use a pastebin or gist. | |||
Guest98765 | OK | ||
mst | Guest98765: fpaste.scsys.co.uk/perl6 | 21:38 | |
since shadowpaste just rejoined :D | |||
japhb | mst: Is there a way to make it prefill *both* the channel and nick? So people can bookmark a personal variant? | 21:39 | |
RabidGravy | right, in the interests of science it took 31 minutes to run all the tests of all my modules, now rebuild and see | ||
japhb | RabidGravy: You mean, "rebuild Rakudo"? | 21:40 | |
RabidGravy | yes | ||
mst | japhb: I'm not actually sure, but what I'm running is p3rl.org/Bot::PasteBot | ||
japhb | metacpan fail | ||
RabidGravy | I'm hoping that some of lizmat++s recent changes will improve this | ||
japhb | mst: 'Bot::Pastebot' perhaps? | 21:41 | |
RabidGravy: That would be awfully nice. :-) | 21:42 | ||
dalek | kudo/nom: b0b2fb0 | lizmat++ | src/core/Parameter.pm: Optimize Parameter.named_names a bit Not sure how to benchmark this, but allocating beforehand rather than pushing, should make things faster. I'm not sure why this is actually needed, apparently something somewhere in the stack needs the strings to be boxed, rather than native strings. |
||
Guest98765 | Thanks, mst | ||
shadowpaste | "Guest98765" at 217.168.150.38 pasted "Odd error message" (17 lines) at fpaste.scsys.co.uk/506406 | ||
mst | japhb: oh, I *always* miscapitalise it | 21:43 | |
jnthn tries to work out the incantation to give bench to get the history plots out of it | 21:45 | ||
japhb | Guest98765: It's because successive lines of REPL are treated as inner scopes, and when you said 'my @list[0]' you declared a new @list with a 0-length first dimension -- and that's what all future lines in that run saw. | ||
jnthn: See line 427 and following of bench | 21:46 | ||
jnthn | japhb: Seems like I just s/compare/history/ in the invocation | 21:47 | |
japhb | 'bench --format=html_plot history ... | ||
yeah | |||
jnthn | Nice | ||
japhb wonders why JSON::Tiny no longer exists in his local Rakudo | 21:48 | ||
Ah! Because panda now ships JSON::Fast instead of JSON::Tiny | 21:50 | ||
21:50
breinbaas left,
breinbaas joined
21:51
kaare_ left
|
|||
japhb fixes his update-rakudo script and uses this as an excuse to rebuild with lizmat++'s improvements | 21:52 | ||
Guest98765 | Thanks, japhb; I'm now trying to relate the message to your explanation. | ||
21:52
Ben_Goldberg joined
|
|||
timotimo | dinner time \o/ | 21:52 | |
21:53
yoleaux left,
yoleaux joined,
ChanServ sets mode: +v yoleaux
|
|||
jnthn | timotimo: Enjoy :) | 21:53 | |
flussence wonders (as a curious and totally incompetent observer) if it'd be possible to spesh away unnecessary lexical scopes, instead of manually removing them | |||
japhb | Guest98765: An N-long dimension has indices 0..(N-1). In the degenerate N=0 case, you get the nonsense you paid for. Mind you, that's LTA. | ||
21:54
Guest98765 left
|
|||
jnthn | flussence: Yes | 21:54 | |
(On the todo list) | |||
flussence | that'll be fun to have :D | ||
21:55
BenGoldberg left,
agent008 joined
|
|||
jnthn | japhb: ooc, is perl6-bench smart enough to not re-build tags? | 21:56 | |
I'll probably just cope with the wasted CPU for now if not, though :) | |||
japhb | jnthn: The build, time, and analyze phases are separate *specifically* so that you can avoid redoing work. But the expectation is that the driving script does the work of preventing rebuilds -- if bench is told to do a rebuild, it will, because it assumes you had a reason to do that. | 22:04 | |
22:05
jameslenz joined
|
|||
jnthn | japhb: That's totally fair enough | 22:06 | |
japhb: Given the machine I'm running this on is pretty much idle otherwise at the time, I've little incentive to save some minutes of CPU time, though. ;) | |||
22:07
MadcapJake left
|
|||
jnthn | Anyways, think I'll be able to add history plots to the measurements | 22:07 | |
japhb | heh | ||
And cool! | |||
jnthn | Need to get the NQP leak check valgrinding in there too | ||
22:09
buharin left
22:13
molaf left
|
|||
dalek | kudo/nom: efed541 | lizmat++ | src/core/Parameter.pm: Round #1 of Parameter optimizations - add some more constants for clarity - create internal method for p6boxing strings (why is this needed??) - use ternaries where possible - use nqp:: ops where possible |
22:19 | |
22:19
agent008 left
|
|||
jnthn | lizmat: Why indeed o.O | 22:20 | |
lizmat doublechecks | 22:21 | ||
jnthn | lizmat: ooc, are you optimizing this because role composition is costly because it compares signatures which is currently implemented by .perl-ing them? :) | ||
lizmat | yes, and to get the lay of the land of that code area | 22:22 | |
22:22
raiph left
|
|||
jnthn | *nod* | 22:23 | |
Then you perhaps already realized this, but there will be faster ways of doing the comparison :) | |||
A short-circuit that checks if the number of things in the signature are different, or just checks nominal types, before doing The Full Thing will rule out lots of non-matches | 22:24 | ||
lizmat | oh, yes, I know | ||
jnthn | ok, coo | ||
*cool | |||
lizmat | getting to that later... | ||
jnthn | :) | ||
lizmat++ | |||
lizmat | hmmm... apparently it just expects an Array back, rather than a List | 22:26 | |
but I guess we want to prevent action at a distance, so I can't just transplant the native attribute into an Array | 22:27 | ||
RabidGravy | I should optimise the order of my "all my modules smoke test" so that it does the ones with the most dependencies earlier | 22:30 | |
22:31
QORRiE left
|
|||
Skarsnik | damn getting an error in a react block sucks :( | 22:34 | |
Odd number of elements found where hash initializer expected | |||
in block <unit> at Ferrel.p6 line 36 | |||
line 36 is react { x) | 22:35 | ||
RabidGravy | yeah, I usually put additional taps on to see which is the offending supply | 22:36 | |
japhb | sortiz: I'm getting a fail-to-install for DBIish; no such file for .../lib/DBDish/Role/Connection.pm6 | ||
dalek | kudo/nom: 9dc21a0 | lizmat++ | src/core/Parameter.pm: Turns out we need an Array only, no need to box |
22:37 | |
Skarsnik | The issue, it's maybe an error a module | ||
is that LTA or it's just not possible to get the proper line in a react context? | |||
jnthn | Skarsnik: I think we should be able to do better | ||
Please file it | 22:38 | ||
Async error reporting is always a bit "fun"... :) | |||
RabidGravy | yeah, when I was fixing up Net::AMQP I think I actually took longer to remove all the debugging instrumentation than actually fixing it | 22:40 | |
Skarsnik | hm, should $disc.send-message($qnb-channel, ) be catched at compile time? | ||
the missing argument | 22:41 | ||
22:45
vendethiel left
22:46
btyler joined
|
|||
RabidGravy | so running the tests again as the first time was inconclusive due probably to module recompilations | 22:49 | |
22:50
Guest89071 is now known as pierrot
|
|||
timotimo | Skarsnik: we can never catch missing arguments on method calls | 22:51 | |
22:51
pierrot is now known as Guest63884
|
|||
timotimo | earlier than runtime, i mean | 22:51 | |
Skarsnik | I mean, it's not even a parse error here? | ||
or it's see as a List ? | |||
22:52
Guest63884 is now known as pierrot
22:53
pierrot is now known as Guest70064
|
|||
timotimo | final comma is allowed | 22:56 | |
if only to make "one argument per line, every line ending in a comma" allowed | 22:57 | ||
Skarsnik | will that be possible to have pragmas that allow perl6 to check method/routine sig at compile time? | 22:58 | |
timotimo | routine sig checking can and will happen at compile time already | ||
22:59
kid511 joined
|
|||
Skarsnik | I get that the idea it's because with Meta programming it's not easy to be sure, but I am pretty sure in lot of code, there is no added/changed method | 22:59 | |
23:00
rburkholder joined,
kid51 left
|
|||
timotimo | when we can mark classes as "closed", then we can perhaps do that, but we'll still have to make sure we don't miss any roles being mixed into instances | 23:02 | |
in any case, with objects, the receiving object is responsible for deciding how method calls are supposed to be treated | |||
that goes back to the fundamental idea of method calls as "sending signals" | |||
23:03
Ben_Goldberg left
|
|||
timotimo | er | 23:05 | |
"sending messages", of course | |||
23:06
_dolmen_ left
23:08
jantore joined
|
|||
dalek | kudo-star-daily: 4f7fef4 | coke++ | log/ (8 files): today (automated commit) |
23:08 | |
kudo-star-daily: d4acb8a | coke++ | log/ (8 files): today (automated commit) |
|||
RabidGravy | lizmat++ # totally unscientific this, but the second run of the modules test was 17 minutes | 23:10 | |
so more of that please | |||
lizmat | ah, so overall almost 2x as fast? cool | 23:11 | |
23:11
neilb_ joined
|
|||
timotimo | "modules test", as in rakudo star? | 23:11 | |
RabidGravy | as in my own modules | ||
timotimo | 17 minutes is super long; how many modules was that? | ||
RabidGravy | 52 | 23:12 | |
23:12
cdg left
|
|||
RabidGravy | er no | 23:12 | |
44 | |||
there are quite a few very I/O intensive ones, some even with sleeps in | 23:13 | ||
23:13
neilb left,
neilb_ is now known as neilb
|
|||
timotimo | hm, ok | 23:16 | |
RabidGravy | for reference the Audio::Encode::LameMP3 tests take approximately 1.75 minutes | ||
Skarsnik | I should h:p:x to see if there is any speed up since 4 months x) | ||
timotimo | how much time did it take before those changes? | ||
how did lizmat get to "2x as fast"? | |||
RabidGravy | 31 minutes previously | 23:17 | |
or thirty something minutes | |||
23:18
Skarsnik left
|
|||
RabidGravy | the LameMP3 test encodes a file completely ten times in different ways readiing it off the disk each time | 23:19 | |
so it really does benefit from faster Bufs | 23:20 | ||
lizmat | jnthn: nqp::existskey is documented to return non-0 on existence | 23:25 | |
but in practice, I've seen it always only return 0 or 1 | |||
could I depend on that behaviour, or do you see that changing at some point in the future ? | 23:26 | ||
23:32
wwwbukolaycom joined
|
|||
lizmat sets off a spectest and goes to bed | 23:35 | ||
good night, #perl5! | |||
sigh | |||
#perl6! | |||
:-) | |||
timotimo | gnite lizmat, good work today! | ||
23:36
kjs_ joined
|
|||
jnthn | lizmat: Probably OK to depend on it | 23:37 | |
RabidGravy | erk | 23:40 | |
I should probably try *installing* my modules every once in a while too | |||
timotimo | they don't install fine any more? :( | 23:45 | |
RabidGravy | a couple of dodgy Build.pm in there | ||
timotimo | mhm | 23:46 | |
dalek | osystem: 6267dbf | RabidGravy++ | META.list: Switch to META6.json while I'm at it |
23:47 | |
jnthn | Fingers crossed, there'll be a couple of extra files per day in the perl6-bench runs on moarvm.org now. We'll find out if I screwed it up in the morning, I guess... :-) | 23:50 | |
'night o/ | |||
23:50
firstdayonthejob left
|
|||
timotimo | neato :) | 23:51 | |
good night, jnthn! | |||
rest well, get well :) |