»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
timotimo the ? is only there to give a syntax error, yeah? 00:03
.o( we also have that slang that allows ? and ! at the end of method names )
dalek kudo/nom: ec91da3 | TimToady++ | src/Perl6/World.nqp:
explain absence of "else" clauses
00:04
TimToady timotimo: yes, but it seems like it should give a good message if you're not in that culture but put ? accidentally 00:05
these error messages are triggered only when the current language decides it's going to give up 00:07
00:10 LLamaRider joined
timotimo ah, yes 00:12
00:14 espadrine left
TimToady m: if 1.so? {...} 00:15
camelia rakudo-moar 4ed69d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8lW1_Tzj4w␤Missing block␤at /tmp/8lW1_Tzj4w:1␤------> 3if 1.so7⏏5? {...}␤ expecting any of:␤ block or pointy block␤ infix␤ infix stopper␤»
TimToady also sorts it to the front, which is arguably better
00:16 dayangkun left 00:20 zcm left 00:26 dolmen left 00:29 raiph joined 00:30 aborazmeh joined, aborazmeh left, aborazmeh joined 00:32 bjz joined 00:35 LLamaRider left
timotimo aye 00:39
00:43 bjz left 00:44 Zoffix joined 00:46 laouji joined 00:54 risou is now known as risou_awy, risou_awy is now known as risou 01:01 kurahaupo1 joined 01:02 tinyblak joined 01:03 telex left, aborazmeh left 01:04 telex joined 01:11 bjz joined
timotimo m: use NativeCall; class SDL_Window is repr('CPointer') { } 01:20
camelia ( no output )
timotimo nqp-m: my @test; say(nqp::definite(@test)) 01:21
camelia nqp-moarvm: OUTPUT«No registered operation handler for 'definite'␤ at gen/moar/stage2/QAST.nqp:1544 (/home/camelia/rakudo-inst-1/share/nqp/lib/QAST.moarvm:compile_op:64)␤ from gen/moar/stage2/QAST.nqp:5338 (/home/camelia/rakudo-inst-1/share/nqp/lib/QAST.moarvm:compile_node:2…»
timotimo nqp-m: my @test; say(nqp::istrue(@test))
camelia nqp-moarvm: OUTPUT«0␤»
timotimo nqp-m: my @test; say(@test =:= NQPMu)
camelia nqp-moarvm: OUTPUT«0␤»
timotimo nqp's limited introspection capabilities ...
nqp-m: my @test; say(@test.^name)
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "say(@test."␤ at gen/moar/stage2/NQPHLL.nqp:516 (/home/camelia/rakudo-inst-1/share/nqp/lib/NQPHLL.moarvm:panic:105)␤ from gen/moar/stage2/NQP.nqp:921 (/home/camelia/rakudo-inst-1/share/nqp/lib/nqp.moarvm:comp_unit:872)␤ from gen/…»
timotimo nqp-m: my @test; say(@test.HOW.name)
camelia nqp-moarvm: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ at gen/moar/stage2/nqpmo.nqp:1201 (/home/camelia/rakudo-inst-1/share/nqp/lib/nqpmo.moarvm:name:0)␤ from /tmp/Ixl_wRCvTZ:1 (<ephemeral file>:<mainline>:30)␤ from gen/moar/stage2/NQPHLL.nqp:1289 …»
timotimo nqp-m: my @test; say(@test.HOW.name(@test))
camelia nqp-moarvm: OUTPUT«NQPArray␤»
timotimo something inside SDL2::Raw is causing "Cannot unbox a type object" inside nqp/lib/Perl6/Metamodel.moarvm:compose_repr 01:22
that's the line with nqp::composetype($obj, nqp::hash('attribute', @repr_info));
i'm expecting that error has to refer to @repr_info? 01:23
ah, that comes from trying to figure out if something's supposed to be inlined 01:31
um ... can you use at_key_o and at_key_int on the same object? 01:32
hm, perhaps
good, i have a fix inside moarvm 01:33
01:34 jepeway left 01:35 raiph left
tony-o_ timotimo: how far are you into whatever you're using HTTP::Server::Async for? 01:35
01:36 jepeway joined
timotimo not terribly far; still at the same stage i've shown you before 01:36
at least ... i think i showed you
tony-o_ okay, yea i remember you showing me
i have an HTTP::Server::Threaded in the works that seems like it might be better at the moment. better meaning that it either responds or moar segfaults which means you can slap overwatch on it and lose only 1 or 2 requests instead of all subsequent requests 01:37
H:S:A sometimes just hangs, which leaves the socket open but unresponsive which means it loses subsequent requests somewhere 01:38
timotimo d'oh
but stability has improved a whole lot?
tony-o_ it is more stable only because it can be reliably restarted when it stops responding 01:40
timotimo hm 01:41
i mean stability for HSA
tony-o_ i'll upload it in an hour or two when i finish writing the response class
oh, it seems more stable but still has the side effects 01:42
timotimo neato. thanks for your work as always
tony-o_ it takes longer to crash with concurrency of 2 requests, it seems to not crash at all with only 1 request at once 01:43
timotimo can you quantify "takes longer"? 01:44
tony-o_ serves up 1200 or so requests instead of 800-900 on my machine 01:53
timotimo hm 01:55
that's not that much better :(
01:55 |Tux| left
tony-o_ it's 50% butter ;) 01:55
s/u/e/
timotimo hmm
i had hoped for more like a 10x improvement
01:56 |Tux| joined
tony-o_ better than a sharp stick in the eye 01:57
have you used siege?
timotimo no 01:58
is that a load testing tool for web servers?
tony-o_ if you run the 'ab.pl6' that is in the repo and then do 'siege -c 2 127.0.0.1:8080' you can watch it fail, it's somewhat consistent at the point where it bonks
yes ^ similar to apache bench
timotimo we still have missing "unit" keywords in HSA 02:01
have you put those in locally yet?
tony-o_ i'm not sure what that means
timotimo m: class Foo; has $.test; 02:02
camelia rakudo-moar ec91da: OUTPUT«Saw 1 occurrence of deprecated code.␤Semicolon form of 'class' without 'unit' seen at:␤ /tmp/oxF3koTC1f, line 1␤Deprecated since v2015.4, will be removed with release v2015.9!␤Please use 'unit class' instead.␤»
timotimo m: unit class Foo; has $.test;
camelia ( no output )
timotimo siege reports we only take 0.01s or 0.00s for each request
sometimes it goes up to 0.04, that must be delay from GC
tony-o_ m: class Foo { has $.test; }
camelia ( no output )
timotimo but somehow it still takes quite long to count up
tony-o_ i think i have curlied classes in HSA
timotimo why is that?
tony-o_ siege delays between requests
timotimo OK 02:03
tony-o_ -b will make it not pause
timotimo i'm at 600 now 02:04
so 50% done, likely
i'd like to see a --profile of that :) 02:05
but if it does crash, it won't generate a profile, iirc
how does it vary if you increase the number of concurrent requests? fails much earlier?
at what point does the HST crash, btw? 02:06
i'm now at 2500 and it's still going 02:12
i may really need to use -b
interesting, with -b i get "connection reset by peer" in siege after 941 requests 02:13
tony-o_ did you do an '-c 2' ? 02:14
timotimo ... pretty much exactly then
yes, that's -c 2
02:14 isBEKaml left
timotimo huh, with -c 4 it explodes at 941 as well 02:14
what is this
same with -c 10 ?!? 02:15
this is most strange
tony-o_ it's always a specific number for me too but it happens at different places on different machines for me
surface pro 3 happens earlier than my imac
happens differently than my macbookpro etc
timotimo strange
tony-o_ it also behaves differently on the jvm than it does in moar 02:16
timotimo with --profile it segfaults :S
ah!
the profiler can't handle multi-threaded apps anyway
02:18 kurahaupo1 left
timotimo needless to say there's still something to be gained in the stability area 02:18
as jnthn has been very eager to point out over and over again to people like me who were convinced things were supposed to be peachy already :) 02:19
tony-o_ :-)
well, i think HST might be more stable short term at least, i haven't played around too much with it yet so i can't answer as to how it behaves over time. i did notice that it either craps the bed or serves requests which makes it usable with something like inode, supervisor, or overwatch if you're into the perl6 utilities 02:20
02:22 risou is now known as risou_awy, risou_awy is now known as risou, risou is now known as risou_awy 02:23 risou_awy is now known as risou, risou is now known as risou_awy 02:24 risou_awy is now known as risou, risou is now known as risou_awy
raydiak o/ 02:24
02:24 risou_awy is now known as risou, risou is now known as risou_awy
TimToady but HST takes such pretty pictures... :) 02:24
02:25 risou_awy is now known as risou
raydiak is there a way to get something like $*W.dissect_longname(), from perl 6 code at runtime? working on panda stuff, need to parse :auth<...> and :ver<...> 02:28
02:30 rmgk_ joined, rmgk left, rmgk_ is now known as rmgk
raydiak eh, nvm, was looking at the wrong pieces of things, think I found what I need 02:32
tony-o_ what was the reasoning for the unit class change? 02:34
i like it, i'm curious though
timotimo we thought people could get confused 02:38
and error messages that result from the user expecting "class Foo;" to be a stub declaration were not helpful at all
tony-o_ cool, i've never liked the empty 'class R;', it looks strange 02:41
timotimo i'm glad :)
BBIAB
02:47 raiph joined 02:56 noganex_ joined 02:59 noganex left 03:13 ssqq joined
timotimo i was wondering if testers.perl6.org should link from the "compiler version" to github for the given commit 03:18
03:24 ssqq left
dalek kudo/cpp: 718e6fe | hoelzro++ | t/04-nativecall/13-cpp-mangling.cpp:
Fix declaration of C++ tests on non-Windows
03:35
kudo/cpp: 61e9c01 | hoelzro++ | t/04-nativecall/13-cpp-mangling.t:
Fix pointer mangling test
kudo/cpp: 0297e65 | hoelzro++ | t/04-nativecall/13-cpp-mangling. (2 files):
Add tests for calling functions using const char *

A lot of const char * functions should simply take a string, so Str is cpp-const should do the trick
kudo/cpp: 8081acb | hoelzro++ | lib/NativeCall/Compiler/GNU.pm:
Make cpp-const work with Str parameters on GNU ABI

It makes them encode to const char *
kudo/cpp: 2211ebb | hoelzro++ | t/04-nativecall/11-cpp.cpp:
Fix DLLEXPORT on non-Windows for 11-cpp.cpp
03:41 adu joined 03:44 laouji left
adu lots of changes 03:47
03:49 raiph left, Sqirrel left
timotimo the newest commit is from may 16, so maybe this was just a rebase 03:49
adu what is this "Semicolon form of 'module' without 'unit'" error? 04:06
timotimo m: class Foo; has $.a
camelia rakudo-moar ec91da: OUTPUT«Saw 1 occurrence of deprecated code.␤Semicolon form of 'class' without 'unit' seen at:␤ /tmp/DeIFThj0E0, line 1␤Deprecated since v2015.4, will be removed with release v2015.9!␤Please use 'unit class' instead.␤»
timotimo m: class Foo { has $.a }
camelia ( no output )
timotimo m: unit class Foo; has $.a
camelia ( no output )
04:15 anaeem1 joined 04:19 anaeem1 left, anaeem1_ joined 04:23 vendethiel joined 04:25 Calibellus joined
adu timotimo: that's the big change I was talking about 04:25
04:26 laouji joined
adu I know it's like just one thing, but it means I have to do stuff to make my library work well again 04:26
04:30 cognominal left, cognominal joined 04:47 adu left, yeahnoob joined 04:48 yeahnoob left 04:49 vendethiel left 05:07 vendethiel joined 05:14 Calibellus left 05:27 kaare_ joined 05:30 vendethiel left, xfix joined, araujo joined, araujo left, araujo joined 05:33 araujo left 05:37 zengargoyle left 05:39 zengargoyle joined 05:42 |Tux| left, |Tux| joined 05:45 Patterner joined 05:49 diana_olhovik joined 05:50 Psyche^ left 05:54 |Tux| left, zengargoyle left 05:55 |Tux| joined 05:56 PZt left, zengargoyle joined
TimToady indeed, and the sooner we break things that still need breaking, the more stable it will be in the last quarter 05:57
06:00 adu joined 06:04 yeahnoob joined, skids left 06:14 zengargoyle left 06:16 zengargoyle joined 06:21 [Sno] left 06:25 atweiden left 06:30 fhelmberger joined 06:39 _mg_ joined 06:42 RabidGravy joined
dalek line-Python: 084ae12 | (Justin DeVuyst)++ | lib/Inline/Python.pm6:
Copy and munge the newer, and working, native sub from I::P5.
06:45
line-Python: db3aab6 | (Justin DeVuyst)++ | lib/Inline/Python.pm6:
Fix for new unit declarator.
line-Python: be0a292 | niner++ | lib/Inline/Python.pm6:
Merge pull request #4 from jdv/master

unit and cur fixes
06:55 gfldex joined 07:02 Ven joined 07:03 Sqirrel joined 07:04 domidumont joined 07:05 [Sno] joined
masak GOOOD MOOOOorning, #perl6 07:05
masak greets using diminuendo today 07:06
m: sub x { 1, 2, 3 }; sub y { 4, 5, 6 }; sub z { x, y }; for z() { .say }
camelia rakudo-moar ec91da: OUTPUT«1 2 3␤4 5 6␤»
masak this... was surprising new (GLR?) behavior to me.
07:06 gfldex left
masak what's the rationale? is it for realz and not a bug? (assuming it is earnest, since surely we have ample tests for this.) 07:06
07:07 Ven left
masak also, what's the recommended way to write the `z` sub nowadays? 07:07
this broke a real production script for me. 07:08
07:08 domidumont left 07:09 domidumont joined 07:11 zakharyas joined
moritz m: sub x { 1, 2, 3 }; sub y { 4, 5, 6 }; sub z { flat x, y }; for z() { .say } 07:15
camelia rakudo-moar ec91da: OUTPUT«1␤2␤3␤4␤5␤6␤»
masak just discovered that 07:16
ok, so assuming that this is "to spec" (or whatever you young people call it nowadays) 07:17
is this change/new behavior documented somewhere? 07:19
I believe it's worth documenting. it's surprising for people used to Perl 5, for example. 07:20
masak fixes that in the script, and gets more failures downstream 07:23
DrForr masak: Re: category theory - en.wikipedia.org/wiki/Univalent_foundations 07:24
masak DrForr: I am aware ;) 07:26
but thanks.
DrForr I was pretty sure, given your comments on category theory, but it never hurts to check.
masak it feels pretty clear that we are seeing the beginnings of an important field, which will only gain in influence in CS over the coming decades. 07:27
that's good. for too long we've been doing computing in ad-hoc ways, without much in the way of foundations.
DrForr I came across www.quantamagazine.org/20150519-wi...s-of-math/ last night. 07:28
masak m: sub foo { return }; my @a; push @a, foo(); say @a.perl 07:37
camelia rakudo-moar ec91da: OUTPUT«[Any]<>␤»
masak ok, this is my next changes-related trouble.
is this a case of returning Empty these days?
07:37 rindolf joined
masak m: sub foo { return Empty }; my @a; push @a, foo(); say @a.perl 07:37
camelia rakudo-moar ec91da: OUTPUT«[]<>␤»
masak seems so.
m: sub foo { return Nil }; my @a; push @a, foo(); say @a.perl
camelia rakudo-moar ec91da: OUTPUT«[Any]<>␤»
masak *sigh* 07:38
masak wishes he had more time to backlog, so he could maybe understand these changes better
DrForr OpenStack has a new Docker-ish community thing, maybe we could get perl6 added. 07:40
masak absolutely.
ok, that fixes my production script. those were the only two things, thankfully.
(`flat x, y` and `return Empty`)
DrForr That's probably affected some of my code too. (At least I had to change things when the match behavior changed last week...) 07:41
07:42 adu left
masak there is nothing in the spec about Empty. 07:42
there is a new section (lizmat++) about "Empty Parcel", which I guess is related. 07:43
m: say () === ()
camelia rakudo-moar ec91da: OUTPUT«True␤»
masak m: say () === Empty
camelia rakudo-moar ec91da: OUTPUT«False␤»
masak m: say $() === Empty
camelia rakudo-moar ec91da: OUTPUT«Use of Nil in string context in block <unit> at /tmp/wpvLQBoQhZ:1␤False␤»
masak m: say $( ) === Empty
camelia rakudo-moar ec91da: OUTPUT«False␤»
masak heh.
or... not related. whatever.
DrForr I noticed it when doing token foo { <match>? } # and $/<match> started returning Empty rather than Nil.
masak (╯°□°)╯︵ ┻━┻
DrForr Naah, I just rewrote a few actions, but it did seem to make things gunkier. 07:46
07:47 FROGGS joined
masak ok, I've backlogged for Empty. 07:49
there isn't much, but I believe this is the important bit: irclog.perlgeek.de/perl6/2015-05-08#i_10569800
I think my only kvetch about Empty is that `return;` means `return Nil;` and not `return Empty;` (as it used to mean before there was a distinction) 07:50
07:52 abraxxa joined
DrForr That sounds pretty much like how I got singed a bit. Eeh, it's all part of the romp through the ever-changing garden maze that is a new language. 07:54
FROGGS wow, what happened to roast? 07:55
461 files changed, 2527 insertions(+), 2506 deletions(-) 07:56
ahh, stuff like s/_/-/
07:56 |Tux| left 07:57 |Tux| joined 08:01 Isp-sec joined 08:09 Ven joined
Ven \o, #perl6! 08:09
FROGGS hi Ven
08:11 virtualsue joined 08:12 vendethiel joined 08:14 darutoko joined 08:17 domidumont left
dalek kudo/nom: 7eb5127 | FROGGS++ | / (4 files):
add support for unions in NativeCall using CUnion repr
08:24
kudo/nom: e09a2fb | FROGGS++ | tools/build/NQP_REVISION:
bump nqp/moar for CUnion repr
08:27 fhelmberger left 08:30 dakkar joined 08:33 Sqirrel left
dalek kudo/nom: 5b50254 | FROGGS++ | t/04-nativecall/CompileTestLib.pm:
add unit keyword to test helper module
08:34
08:36 Sqirrel joined 08:44 espadrine joined
DrForr masak: I assume you've also run across hottheory.files.wordpress.com/2013...1a258c.pdf 08:46
(which has some pretty neat ASC^WUnicode art :) ) 08:47
Oh, good grief, they cover surreal numbers on page 401..411. 08:48
masak I have indeed run into it. 08:49
started reading it, even, but not gotten far yet.
probably will devour it at some point.
to be honest, I'm still catching up on group theory, universal algebra, and topology just so I'll be able to better understand ordinary 50-year-old category theory :P 08:50
this new stuff looks exciting but I'm not there yet. I'm about 50 years behind.
DrForr Nod. I did algebraic topology in college, but that was a *long* time ago. 08:51
08:58 vendethiel left
Ven has that book... as a printed copy 09:00
if you want to read it, I'd recommend to (pretty much) skip the introduction. It's really, really, really scary, and much more than what's following
DrForr Though it does give you the excuse to write (♢⊴♡) :≡ ∀(y:No)... to f*ck with non-Unicode systems.
09:09 Foxcool left 09:12 Foxcool joined 09:20 fhelmberger joined 09:27 Ven left 09:29 yeahnoob left
DrForr Oh, nice, they released the TeX source as well, HoTT++ 09:32
Also, . o ( TeX, not Omega? ) 09:33
masak what's Omega? 09:35
clearly they should've used iTeX :P www.youtube.com/watch?v=eKaI78K_rgA
DrForr The ground-up Unicode rewrite.
masak ooh 09:36
DrForr Does the fact that I actually *heard* the *ding* without even viewing the YouTube link make me weird? :)
moritz DrForr: if so, I'm weird too :-)
masak oh, me as well 09:39
I also heard the proper tonal pronunciation
09:39 vendethiel joined
masak feels at home here on #perl6 :) 09:40
09:42 Isp-sec left 09:47 rarara left 09:53 RabidGravy left 10:00 andreoss joined 10:01 vendethiel left 10:05 laouji left 10:07 vendethiel joined, lizmat joined 10:08 woolfy joined 10:09 woolfy left, pdcawley joined 10:13 pdcawley left 10:14 lizmat_ joined, lizmat left 10:15 lizmat_ is now known as lizmat 10:19 pdcawley joined 10:20 rindolf left 10:29 vendethiel left 10:33 domidumont joined
lizmat good *, #perl6! 10:39
dalek ast: e816632 | lizmat++ | / (70 files):
s/eval_lives_ok/eval-lives-ok/g
lizmat those should probably all be something like is EVAL "...", $value to be sure it is doing the right thing 10:40
but that is for another day
10:52 Ven joined 10:53 risou is now known as risou_awy, risou_awy is now known as risou 10:54 risou is now known as risou_awy, risou_awy is now known as risou
dalek ast: 9f47446 | lizmat++ | / (229 files):
s/lives_ok/lives-ok/g
11:01
lizmat there was something special about the migration of is_approx to is-approx, right? 11:02
[ptc] yay lizmat++! # kebab-case 11:03
lizmat: yes, is-approx hasn't yet been implemented, has it?
iirc, there was still a discussion going on on github about that
lizmat is-approx atm is the old is_approx 11:04
[ptc] specifically about the implementation
moritz and didn't folks discuss an alternative interface, or alternative precision calculation or something?
lizmat in Test.pm
[ptc] moritz: yup
lizmat so maybe I should undeprecate is_approx now ?
to allow for a more smooth transition to is-approx ? 11:05
moritz lizmat:
[ptc] the python peeps had a good algorithm for determining approximately equal to something, and I think that was less surprising than the current implemenation
moritz lizmat: yes
[ptc] thinks that would probably be a good idea, too 11:06
lizmat ok, will do
11:06 laouji joined
dalek kudo/nom: fb28112 | lizmat++ | lib/Test.pm:
Undeprecate is_approx in lieu of new API
11:08
11:12 araujo joined 11:13 araujo left 11:35 araujo joined, araujo left, araujo joined, araujo left, RabidGravy joined 11:37 Ven left 11:39 araujo joined 11:40 telex left 11:41 araujo left
dalek ast: c5e8a0f | lizmat++ | / (138 files):
Remove all superstitious "done"s
11:42
11:42 telex joined
lizmat afk for a bit& 11:43
11:50 lolisa joined 11:56 pdcawley left 12:00 Ven joined, Tux__ joined 12:01 chahal joined 12:02 chahal left 12:04 |Tux| left, vendethiel joined 12:07 b2gills left 12:09 rarara joined 12:20 b2gills joined 12:25 laouji left 12:29 araujo joined 12:34 Sqirrel left 12:36 Sqirrel joined
Ven if I override "rule ws" inside my grammar, will it correctly be used with :sigspace? 12:40
moritz yes
(your version of ws will be used)
Ven ...seems like I can't paste a tab inside the linenoise repl 12:42
12:50 vendethiel left 12:53 vendethiel joined 12:56 pdcawley joined 12:57 anaeem1__ joined, anaeem1__ left 13:00 anaeem1_ left
Ven mmh, Grammar::Debugger tells me "KAY" (or rather, MATCH) when running, but then the `ok` fails... 13:02
13:06 raiph joined 13:10 [Sno] left
hoelzro tadzik: do you remember why panda runs $cmd with standard error redirected to standard output here? github.com/tadzik/panda/blob/maste...er.pm#L110 13:13
ah, this is why: github.com/tadzik/panda/pull/127 13:14
(and github.com/tadzik/panda/pull/126)
FROGGS hoelzro: that was me 13:15
13:15 vendethiel left
hoelzro FROGGS: ah ha 13:16
I'm trying to figure out a comprimise so that I can get emmentaler to be able to look at standard error output for warnings 13:17
FROGGS hmmm
sadly we cannot read from two filehandles when piping
13:25 burnersk left
hoelzro yeah, it's no easy task 13:29
13:31 brrt joined
brrt \o 13:31
13:32 dolmen joined
hoelzro ahoy brrt 13:32
brrt hi hoelzro :-)
i was looking through the site at julialang.org/ and noticed something in the 'performance table' 13:34
luajit is basically 'twice as slow as C' for most operations
that is pretty **** amazing 13:35
i hope that we can get as speedy as that once 13:36
[Coke] looks like the rakudo-star-daily run ran, but all the module tests failed with a not found. 13:43
13:48 skids joined 13:51 krakan left 13:52 lolisa left 13:54 skids left 13:58 FROGGS left
dalek pan style="color: #395be5">perl6-examples: e15c82b | andreoss++ | / (3 files):
[euler] problem 89
13:58
13:58 vendethiel joined
Woodi hi #perl6 :) 14:00
14:02 anaeem1_ joined
Woodi just reading www.cs.utexas.edu/users/EWD/transc...WD648.html and in one paragraph there are words: "object", "structural" and "lemma" (as description for subroutine)... it is amazing that all that common words was used to describe what program is :) 14:03
but about panda vs versions and authors: I think some system like Debian package pinning configuration file can be used - man 5 apt_preferences it automatically resolves dependencies when some package was pinned as prefered 14:06
14:06 [Sno] joined
timotimo but we want to be able to install the same module name from two different authors, or two or more versions of the same module at the same time 14:06
14:21 krakan joined 14:23 dolmen left 14:29 PZt joined
Woodi timotimo: I.m not familiar with details. just saw command line attempts... 14:33
14:33 [ptc] joined 14:34 araujo left
Woodi ...which is also valid way... 14:34
14:34 Ven left
dalek kudo-star-daily: 0577c32 | coke++ | log/ (10 files):
today (automated commit)
14:36
rl6-roast-data: aaa2cbe | coke++ | / (9 files):
today (automated commit)
rl6-roast-data: 2d1e623 | coke++ | / (2 files):
today (automated commit)
rl6-roast-data: b68438d | coke++ | perl6_pass_rates.csv:
today (automated commit)
[Coke] same old nqp-parrot failures. 14:38
14:39 Calibellus joined
[Coke] ... that's wierd. why are there 3 commits from perl6-roast data... 14:40
... and no commits for 3 days before that? 14:41
that's... weird.
I'm going to kill those commits and re-run today's run by hand, I guess. 14:42
14:45 vendethiel left 14:47 muraiki joined 14:52 vendethiel joined 14:56 tinyblak left
dalek kudo/cpp: 35fb090 | hoelzro++ | t/04-nativecall/13-cpp-mangling. (2 files):
Test C++ methods marked as 'const'
14:56
kudo/cpp: 30c9a82 | hoelzro++ | lib/NativeCall.pm:
Add cpp-const trait for routines

For some reason, when I actually use this, the new trait is not recognized and a compilation failure occurs.
kudo/cpp: b96ae51 | hoelzro++ | lib/NativeCall/Compiler/GNU.pm:
Fix GNU mangling for const methods
colomon oooo, cpp progress! 15:01
hahainternet oh wow cpp 15:05
crazy
i need to have another look at nativecall
see if i can alloc what's required to get tcl working through it
i am under the impression that was all enabled but i haven't got the time to look at it before weekend which sucks
15:06 FROGGS joined 15:07 freeze joined 15:10 fhelmberger left
tony-o_ hoelzro++ 15:12
15:13 vendethiel left 15:15 vendethiel joined, _mg_ left
timotimo aaaah, the hague grant success for brrt has been news'd on the perlfoundation site 15:16
news.perlfoundation.org/2015/05/hag...epted.html
colomon \o/ 15:17
FROGGS yays, got CUnions ported to jvm (which was easy) and inlining (which was very not easy) 15:20
hoelzro hahainternet: the C++ support is neat; major props to FROGGS[mobile] for doing it
timotimo FROGGS: wow, well done!
hahainternet hoelzro: i don't have any desire to use it, but that's purely due to C++, congrats on all the work done so far
nativecall is very compelling
hoelzro hahainternet: I'm not a C++ guy myself, but I want to use C++ libraries from Perl 6 15:21
hahainternet indeed
hoelzro and it may be appealing to people with C++ codebases that want to use Perl 6 to drive higher level logic
timotimo right, using existing c++ libraries is very valid even if you don't want to write any C++
colomon has quite a lot of C++ code…
hahainternet i wasn't trying to suggest it wasn't valid :) 15:22
timotimo it'd be super amazing if we could have Qt without going through Python
hahainternet for me, tcl and gst are on the perl6 hack-about list 15:23
timotimo i don't know what gst is
hahainternet ran into issues with tcl as it expects the caller to do the allocations and i wanted to be as pure perl6 as possible
timotimo: gstreamer
timotimo ah
hahainternet i mean i can hack around any of it regardless, but this is purely for my pleasure so i am fine with waiting 15:24
i need to read more about GLR anyway and get writing some p6 even if it doesn't use nativecall
15:24 tinyblak joined
[Coke] hahainternet: you working on inline::tcl or somesuch? 15:24
timotimo well, you can do allocations in perl6 by just calling into malloc
hahainternet [Coke]: not exactly
PerlJam hahainternet: once the GLR is done, you shouldn't need to think about it ever again. 15:25
[Coke] I ran out of tuits to try to get tcl-on-nqp working some time ago. Surprised to see anyone looking at tcl integration at all :)
hahainternet and timotimo yeah ultimately i need to hook it into event loops and GC so there's a lot of reading before
[Coke]: it's not so much integration as i have an existing tcl bot i'm refactoring to use 8.6, and it would be very handy to safely hook in a whole bunch of libraries that have poor tcl equivalents
hoelzro timotimo: I didn't know we relied on Python for Qt functionality 15:26
hahainternet so from image manipulation to DOM parsing to websockets
timotimo i haven't seen anybody use Qt so far, except for examples from nine's talks
the talks about inline::*, thtat is 15:27
hahainternet i mean i can always do all of this in golang or C etc, i've done some work in golang already for it
but i need to learn perl6 and it's a good excuse to do some really tricky stuff well
timotimo that sounds very good :)
arnsholt FROGGS: How are you handling inlined stuff? Do they return a pointer to the embedded thing, or a copy? 15:28
timotimo i think maybe we want a "reference counted piece of memory" REPR
with a central registry
so we can allocate n bytes, say "something out there's referencing it at the moment" and not worry about a thing any more 15:29
arnsholt I think that's gonna end up being painful
FROGGS arnsholt: you can look at the code in a bit
arnsholt I think a better way is to make it the programmer's job to keep track of which bits of memory are to be freed by C (and thus has to be left alone by Perl 6), and which ones can be freed when the Perl 6 object is GCed 15:30
FROGGS: Cool. Problem is both solutions are going to be annoying; either we'll have non-C semantics (if it's a poiinter to the embedded thing) or unintuitive Perl 6 semantics (if it's a copy) 15:31
FROGGS arnsholt: in short: I changed the default Structure and Union interfaces to inline into other structs rather then get referenced
hahainternet this is something i have to face in Perl6 and Go for this Tcl project too, as it has its own reference counting so i need to take part in that 15:32
arnsholt That's going to break everything in the ecosystem though, isn't it?
hahainternet but i am not exactly particularly experienced with this, nor particularly knowledgable
FROGGS arnsholt: and when we construct a struct with an referenced thing, I install a Pointer instead of the Union/Struct
arnsholt: no, nothing changes from a Perl 6 level perspective 15:33
arnsholt Oh, I don't care about the implementation details that much right now
FROGGS arnsholt: to tell NativeCall that a struct/union in an attribute shall be inlined you put an 'is inlined' trait on it
arnsholt The question is what you get when you read an inlined attribute
FROGGS can you rephrase that? 15:35
arnsholt Assuming "struct a { struct b { int value; }; }", what do you get from $a.b? 15:36
FROGGS struct b
arnsholt Although it has to be a pointer, come to think of it, otherwise $a.b.value = 42 won't work
hoelzro hmm...instead of using method foo is cpp-const for const c++ methods, does it make more sense to re-use an existing Perl 6 trait like 'is pure'?
arnsholt But that's different from the C semantics
hoelzro hmm, actually, pure !~~ const 15:37
15:37 vendethiel left
arnsholt Now that I actually articulate it, I think the C semantics can't really be duplicated in NativeCall anyways, since that'd mean changing the value in a flattened thing would be impossible through the normal means 15:37
15:41 brrt left
FROGGS arnsholt: attribute reads and writes for cstructs and cunion are handled by an attribute offset plus the mem location of the cstruct/cunion ptr 15:42
arnsholt: does that answer your question?
TimToady m: my @a = 1,2,3; .say for @a,@a
camelia rakudo-moar fb2811: OUTPUT«1␤2␤3␤1␤2␤3␤»
TimToady is working on ^^ this bug
arnsholt FROGGS: Right, so you basically return &(a->b) rather than a->b 15:43
FROGGS TimToady: this should print "1 2 3␤1 2 3␤"?
TimToady yes
FROGGS TimToady: nice, that even makes sense in my lil' brain :o)
arnsholt Probably the only way to handle it, now that I've actually thought about it for a bit
TimToady lists should not let things force flattening for themselves like that
arnsholt FROGGS: Last I discussed this with jnthn, I think he voted against "is inlined" BTW 15:44
TimToady m: my @a = 1,2,3; .say for ^3,@a
camelia rakudo-moar fb2811: OUTPUT«0␤1␤2␤1␤2␤3␤»
TimToady same problem
arnsholt Not sure if we came up with any better names, though
FROGGS arnsholt: that is just a trait name in NativeCall.pm... we can easily change that 15:45
arnsholt: though, it is the only name I can come up with, and it explains very well what is going on
arnsholt: and the 'is inlined' trait on attributes will also work on shaped arrays, which is why I did that 15:46
arnsholt Oh, we'll have "is inlined" elsewhere too? That changes things a bit
The objection, IIRC, is that inlined means other things too. Like inlined functions
FROGGS arnsholt: not yet 15:47
I was talking of 'is inlined' of shaped arrays in cstructs etc
on*
15:47 skids joined
FROGGS ohh 15:47
inlined functions...
well, I'm all ears for a better trait name 15:48
TimToady the opposite of indirect is direct, I suppose
the opposite of there is here 15:49
the opposite of transclusion is inclusion
FROGGS TimToady: do you propose a trait called 'is lined'? :D 15:50
or translined...
arnsholt FROGGS: I think my best candidates are "is flat", "is flattened" or "is embedded"
TimToady no, direct, here, or included
arnsholt Although embedded is one of those ambiguous ones too
FROGGS arnsholt: and flat has other meanings in P6
arnsholt included might work
FROGGS yeah...
TimToady incorporated 15:52
FROGGS nah, to dyffucilt
FROGGS .oO( is assimilated - we can even shorten that one... ) 15:53
TimToady is borged
borg instead of has :) borg int32 @foo[4]; 15:55
though I think we proposed HAS for that once
15:56 noganex_ left
TimToady well, I can fix @a,@a by not setting $!flattens, but then the parser breaks when compiling Test.pm. Gee, I am so completely surprised... ;) 15:58
FROGGS *g*
TimToady rather suspects this is gonna be a fix for next month, not this month, esp since he has to drive to SoCal today 16:01
16:02 araujo joined, araujo left, araujo joined
FROGGS TimToady: we can do HAZ instead of the trait without much fuzz I think... happily that won't change anything to the VMs 16:02
I just need to change my feelings about HAZ 16:03
TimToady shouldn't it be CANHAS? 16:04
CANHAZ I mean
16:04 rindolf joined
raydiak please tell me I stumbled into another joke.../me backlogs :) 16:04
FROGGS: I've got :auth<> and :ver<> more or less working here (this version is in the "authver" branch), though the parsing is a flimsy hack, didn't have much luck trying to make use of Perl6::Grammar for that...any advice there, or is parsing them with /\: (\w+) \< (<-[>]>*) \>/ adequate for now? 16:07
16:08 Ven joined, diana_olhovik left
raydiak FROGGS: also I'm matching the auth as a substring atm so e.g. :auth<FROGGS> matches :auth<github:FROGGS>, but don't think we can keep doing that without a separate syntax for a whole literal string, in case one auth is a substr of another 16:08
FROGGS raydiak: it would be most awesome if we could match the entire string against Perl6::Grammar.longname 16:10
raydiak FROGGS: indeed, I took a couple cracks at that before I decided I was wasting time, but I'm all for it if you can tell me how to do so from p6 user code at runtime 16:11
FROGGS raydiak: I don't know how (yet) :/
I mean...
m: say $~MAIN
camelia rakudo-moar fb2811: OUTPUT«Slang.new(:grammar(Perl6::Grammar), :actions(Perl6::Actions))␤» 16:12
FROGGS m: say $~MAIN.grammar.longname
camelia rakudo-moar fb2811: OUTPUT«Cannot look up attributes in a type object␤ in any longname at src/Perl6/Grammar.nqp:419␤ in block <unit> at /tmp/R0jd9eAHg7:1␤ in any <unit-outer> at /tmp/R0jd9eAHg7:1␤␤»
FROGGS m: say $~MAIN.grammar.new.longname
camelia rakudo-moar fb2811: OUTPUT«Cannot look up attributes in a type object␤ in any longname at src/Perl6/Grammar.nqp:419␤ in block <unit> at /tmp/BHUAHV_1k5:1␤ in any <unit-outer> at /tmp/BHUAHV_1k5:1␤␤»
FROGGS raydiak: I guess we don't want to EVAL these strings? 16:13
raydiak FROGGS: I for one am not in favor of EVALs in the package manager from user input unless it's somehow safe in ways I don't understand 16:14
16:14 gfldex joined
FROGGS yes, I feel exactly the same way 16:14
raydiak though iirc, I could sworn I did see someone manage to get a parse to work like that here before...maybe will check the irclog 16:15
16:15 eli-se joined
FROGGS problem is, you use 'use Foo:auth(/:i froggs/)' in your code and you want to paste that to 'panda install' or put it into the deps section of your META.info 16:15
eli-se hi!! 16:16
FROGGS m: use Perl6::Grammar:from<NQP>
camelia ( no output )
FROGGS raydiak: along those lines... setting highwater etc
raydiak: but this will also run BEGIN blocks and is useless without the actions 16:17
it is like we want an EVAL, that is a subset of Perl6::Grammar
raydiak FROGGS: well we'd need to draw a line in the panda options which doesn't exist in Rakudo anyway...or else they can do like panda install Foo:auth(qx/rf -rf \//) or so :)
FROGGS m: say EVAL ':auth(/:i froggs/)'
camelia rakudo-moar fb2811: OUTPUT«auth => ␤»
16:18 espadrine left
raydiak FROGGS: yes subset, precisely 16:18
FROGGS: housesitting until Friday, internet connection is even worse here, forgive me if I seem unattentive :)
FROGGS raydiak: np :o) 16:20
(I have three kids, I know the feeling)
raydiak heh, three needy dogs here :)
16:22 anaeem1_ left
FROGGS :D 16:25
andreoss is v5 discontinued? 16:28
i'm trying to build it. a bunch of warnings about deprecated NQP functions
and it fails to build of course 16:30
FROGGS andreoss: it is tightly coupled with the rakudo internals, and thus breaks very fast when one does not keep it up to date 16:31
andreoss: and I dont touched it for months
one reason is that Inline::Perl5 serves the goals that v5 was meant to solve
16:31 liztormato joined
FROGGS though, it was/is good to explore slangs 16:32
liztormato FROGGS: do you mind if I give it some TLC ?
FROGGS TLC? 16:33
liztormato Tender Loving Care
FROGGS might make more sense when I invest some time to unbreak it 16:34
dinner &
andreoss but Inline::Perl5 uses perl5 binaries under the hood? doesn't it?
liztormato Yes 16:35
16:35 kaare__ joined, kaare_ left
andreoss it's not as nice as having alias perl='perl5 -MPerl5' 16:35
*perl6 16:36
liztormato Some more cycling & 16:38
16:38 liztormato left
raydiak I guess it depends...if by "nice" you mean things like fast, stable, and complete, I::P5 is (at least arguably) nicer than v5 16:39
16:42 molaf joined
andreoss people would be more willing to migrate if there was features like v5 provides 16:45
TimToady the problem with fixing @a,@a appears to be all the places that do things like (tostore,).flat.eager assuming an Array will preflatten in the parcel, which looks like a rather smelly construct to begin with
I think this is definitely going to have to be done post-release 16:46
andreoss "you just put 'use v5'; and run it with perl6"
16:47 noganex joined, aborazmeh joined, aborazmeh left, aborazmeh joined
TimToady .tell pmichaud FYI I'm intending to slaughter the $!flattens flag after this release since it makes @a,@a misbehave in non-flat list context, looks like we'll have to fix all the (foo,).flat.eager things scattered here and there too 16:49
yoleaux TimToady: I'll pass your message to pmichaud.
16:50 diana_olhovik joined
jercos andreoss: really you should already have e.g., use v5.20 in perl 5 scripts, right? :p 16:50
otherwise you have to jump through hoops to use say >.> 16:51
16:51 aborazmeh left, vendethiel joined
andreoss some people would have 'use 5.020' 16:53
as PBP advices
16:54 zakharyas left 16:55 mohij joined, anaeem1_ joined, espadrine joined
jercos eh, eval "use $]" and be done with it 16:57
16:58 Ven is now known as Guest24686
jercos Rakudo seems unaware of perl's more historical version check syntax though. 16:58
Guest24686 whut 16:59
jercos m: use v5.20
camelia rakudo-moar fb2811: OUTPUT«===SORRY!===␤Could not find Perl5 in any of:␤ file#/home/camelia/.perl6/2015.04-330-gfb28112/lib␤ inst#/home/camelia/.perl6/2015.04-330-gfb28112␤ file#/home/camelia/rakudo-inst-1/share/perl6/lib␤ file#/home/camelia/rakudo-inst-1/share/perl6/v…»
jercos m: use 5.020
camelia rakudo-moar fb2811: OUTPUT«5===SORRY!5=== Error while compiling /tmp/cpmdh45P0f␤Undeclared routine:␤ use used at line 1␤␤»
jercos Guest24686: nickserv is a fickle beastie.
16:59 eli-se is now known as Ven_ 17:00 Ven_ is now known as Venn_, Venn_ is now known as eli-se
Guest24686 eli-se pls 17:00
eli-se XD
17:00 Guest24686 is now known as Ven_
Ven_ seems like someone registered "ven", and it wasn't me :P 17:02
17:05 dakkar left
FROGGS andreoss: a 'use v5' can also load it via Inline::Perl5, when invoked with p6 17:06
17:13 vendethiel left 17:14 gfldex left, rivarun left 17:18 vendethiel joined 17:23 xinming joined 17:25 anaeem1_ left 17:41 vendethiel left 17:42 andreoss left, [ptc] left 17:43 vendethiel joined
dalek p: 64e9266 | FROGGS++ | src/vm/jvm/runtime/org/perl6/nqp/ (9 files):
implement CUnion repr on jvm, also inlining of CStructs and CUnions
17:45
timotimo way cool. 17:46
masak FROGGS++
dalek kudo/nom: 7cd5616 | FROGGS++ | t (3 files):
bumd nqp and add tests for CUnion
timotimo Karlsruhe (ots) - Eine aufmerksame Bankmitarbeiterin verhinderte am Dienstag, dass eine ältere Frau um ihr Erspartes gebracht wurde. Als die 83-jährige Kundin gegen 13.20 Uhr die Bank betrat um 2.700 Euro abzuheben, wurde die Angestellte aufmerksam und fragte nach, wofür sie denn das Geld benötige. Die Dame erwiderte, dass sie das Geld einer Frau, die vor der Bank warten würde, aushändigen möchte. Dies 17:47
kam der 45-jährigen Mitarbeiterin merkwürdig vor und sie wollte daraufhin die Frau vor der Bank dazu befragen. Als die 20-30-jährige Betrügerin die Bankangestellte auf sich zukommen sah, fuhr sie mit einem VW Polo schnell davon. Nach dem Vorfall begleitete die Bankangestellte die 83-Jährige zur Polizei um Anzeige zu erstatten. Dort stellte sich heraus, dass die Dame vor zwei Wochen einen Brief erhielt, in
dem das Geld gefordert wurde. Da der Betrag aber nicht ausbezahlt wurde, erschien die Betrügerin direkt an der Haustür der 83-Jährigen und forderte sie auf mit ihr zur Bank zu gehen, um das Geld zu holen. Die Polizei lobt das vorbildliche Verhalten der 45-Jährigen Bankangestellten und bittet alle Bankmitarbeiter in solchen Verdachtsfällen lieber einmal mehr Nachzufragen wozu das Geld benötigt wird.
17:47 [ptc] joined
FROGGS ups 17:47
masak timotimo: a bit too much at a time... :)
FROGGS :o) 17:48
Bankangestellte++ though
17:49 cognominal is now known as venerable
timotimo oh 17:49
i think a cat ran over my keyboard
and found the middle click
masak hah!
17:49 venerable is now known as cognominal
masak "it was the cat" 17:49
Ven_ ...could've been worse :)
FROGGS hehe >.<
cognominal Ven_, you can take Venerable :)
Ven_ cognominal no ty 17:50
17:50 gfldex joined
masak Venetian_Blinds 17:50
moritz enjoyed reading hintjens.com/blog:85 17:51
cognominal or venereal :)
timotimo well, in order to paste i have to put three fingers on the trackpad and press down 17:52
during the walk of a cat, one front and one back foot are down simultaneously
masak timotimo: getting more and more respect for $cat
timotimo hehe
he's a real troublemaker sometimes
the other cat is very careful instead 17:53
17:53 Ven_ left
dalek kudo/nom: 29e0835 | FROGGS++ | t/04-nativecall/04-pointers.c:
inlude stdlib.h to get prototype of free()
17:54
FROGGS damn c key -.-
masak .oO( <other_cat> blame troublemaker cat -- achievement unlocked ) :P
17:55 telex left 17:56 telex joined
FROGGS now... do we really want to have HAS instead of the 'is inlined' trait? 17:57
I guess, I should attempt to fix that
18:04 [ptc] left, [ptc] joined 18:05 burnersk joined, vendethiel left, [ptc]_ joined 18:10 eli-se left
FROGGS m: say 0x65 18:12
camelia rakudo-moar fb2811: OUTPUT«101␤»
masak m: say 65.base(8) 18:13
camelia rakudo-moar fb2811: OUTPUT«101␤»
masak o.O
coincidence? I think not!
FROGGS heh 18:14
18:23 diana_olhovik left 18:25 vendethiel joined 18:29 adu joined 18:30 rindolf left
dalek p: b91fbc8 | FROGGS++ | tools/build/MOAR_REVISION:
bump moar for CStruct/CUnion improvements
18:30
kudo/nom: aca2a9e | (Sterling Hanenkamp)++ | t/04-nativecall/06-struct. (2 files):
Adding test demonstrating structs with nested structs are not working
18:31
kudo/nom: 354229e | FROGGS++ | t (2 files):
add missing 'is inlined' in test and bump nqp
timotimo do structs with nested structs inside nested structs work, though? 18:32
FROGGS yes, that should work
timotimo how about putting structs inside structs that were put into structs that were already inside structs?
FROGGS the number of layers does not matter 18:33
timotimo ok 18:34
nwc10 complication nested in complication? :-) -- www.imdb.com/title/tt0088846/quotes...=qt0223927 18:36
18:41 diana_olhovik_ joined
rjbs Her name was Mrs. Terrain? 18:41
Oh, right. I was thinking it was Sam's mother, but it was her poor friend.
18:44 _mg_ joined 18:47 eli-se joined
raydiak FROGGS: wrt parsing longnames... :auth(/:i froggs/) kinda feels like terrible mixing of data and code which leads directly to the problem at hand, and secondarily, is unclear to users who might not be very familiar with perl itself 18:49
FROGGS raydiak: though it is valid as part of a longname in a use statement 18:50
19:09 ilogger2 joined, ChanServ sets mode: +v ilogger2 19:10 fhelmberger joined
dalek kudo/nom: 6d990fa | FROGGS++ | t/04-nativecall/06-struct.t:
int in NativeCall code is ambiguous, use int32
19:11
19:13 dwarring joined
FROGGS and with this patch, all nativecall tests pass on jvm too... 19:14
I'll probably disable CURLI tomorrow for the release, and do an ecosystem smoke to see what's going on 19:15
but now, I'll rest
have a nice evening #perl6
19:15 fhelmberger left
FROGGS ahh, if someone implemented the HAS keyword (maybe steeling ideas from OO::Monitor) which would then maybe just apply the 'is inlined' trait, that'd be sweet :o) 19:16
19:45 ilogger2 joined, ChanServ sets mode: +v ilogger2
avuserow hahainternet: hey, I saw you mentioning gstreamer in the backlog. I played with that about 3-4 months ago and ran into some difficulties. I was wondering if you had any success or if it was just ideas at this stage 19:48
I think I managed to get it to play audio, which is my goal, but had troubles with their signal mechanism to determine what to play next automatically
hahainternet avuserow: i've not tried with perl6 yet, i have done some with python and with Golang 19:51
i'll have a play with it in p6 sooner or later but i know nothing about GC internals or event loops yet
avuserow yeah, I was just hacking around. xine seemed easier, but gstreamer seems to be the preferred way to output audio on linux these days, especially gaplessly 19:53
19:57 brrt joined 20:01 eli-se joined
lizmat hi #perl6! 20:03
.tell nine Is there a reason why nobody has added a "unit" statement to Inline::Perl5 to quiet the warnings? 20:04
yoleaux lizmat: I'll pass your message to nine.
20:04 dolmen joined
vendethiel o/ 20:05
masak lizmat: waiting until after release?
lizmat possibly... :-) 20:06
I just wanted to make sure it was a deliberate lack of action :-)
masak .oO( any sufficiently advanced lack of action is indistinguishable from intent ) 20:07
lizmat has *not* mentioned "will lazy" attribute trait in ChangeLog 20:20
[Coke] why not, too lazy? 20:21
lizmat Well, there was this discussion about the naming and whether or not it should be in core ? 20:22
masak lizmat: didn't it come and go in core?
lizmat well, yes, I put it there *before* the discussion :-)
masak I mean, if it's gone before the release, no need to mention it in the ChangeLog, right? 20:23
lizmat true
but not mentioning it now, and still keeping it, might not break code out there
20:24 [Sno] joined
lizmat .tell rjbs are you using 'will lazy' atm? 20:27
yoleaux lizmat: I'll pass your message to rjbs.
lizmat fwiw, if we keep it this way, I would probably want to call it "will lazily"
20:28 fernando___ left, fernando___ joined
japhb .ask FROGGS From the commit message for MoarVM: commit 4102a25b1acea1d453d87f4e614d328ba0af8816 20:29
yoleaux japhb: I'll pass your message to FROGGS.
japhb .ask FROGGS From the commit message for MoarVM: commit 4102a25b1acea1d453d87f4e614d328ba0af8816 it looks like the comparison is reversed (> instead of <). Am I misunderstanding?
yoleaux japhb: I'll pass your message to FROGGS.
masak I still have the uneasy feeling that the `will lazy` feature is not carrying its own weight. it doesn't have that je-ne-sais quoi of most core Perl 6 features, doing at least two things well at the same time. 20:30
instead, it has the sense of a way too overpowered tool (a new keyword-ish thing) to solve a single isolated problem. 20:31
lizmat but the general solution would involve a lot of boilerplate, like 20:33
method foo { $!foo //= lazy init } 20:34
masak I'm not advocating a general solution. rather the opposite.
I *am* saying though that this problem can be solved outside of core first, and that because it can, it should.
dalek kudo/nom: 34788bf | lizmat++ | src/core/traits.pm:
Sorry, "will lazy" not to be for this release

  <masak> I *am* saying though that this problem can be solved outside
   of core first, and that because it can, it should.
20:36
masak phew. :) or rather, deja-phew. :/ 20:37
20:38 colomon joined
masak this is the second iteration of this discussion... 20:38
lizmat well, I thought I'd do it now (again) before it gets too much into the wild 20:39
especially since we're going to have a Rakudo* release from this one (hopefully)
dalek ast: 9cf2c1c | lizmat++ | S12-attributes/instance.t:
Remove tests for "will lazy"
20:40
masak oh, I see. we discussed it on 2015-05-07, it was concluded that it should be removed, but it was never removed then. 20:41
lizmat++
lizmat fwiw, I missed that conclusion
so good that we're on the same page then
masak irclog.perlgeek.de/perl6/2015-05-07#i_10565792
lizmat apparently I didn't miss it :-) 20:42
masak :P
lizmat so, it was my subconscious making me bring it up again :-)
masak well, I just assumed it'd been removed already. so I'm glad we had this talk ;)
I think `will lazy` fails the "strangely consistent" test for me. I could probably express this sentiment better face-to-face... 20:43
lizmat ah, and there was this discussion about "is cached" I forgot abouy 20:44
*about
masak .oO( reminding you about backlog as a service )
brrt what even is 'will lazy' supposed to do 20:45
lizmat execute code on first access of an attribute, rather than at object create time 20:46
(which is what a default value does) 20:47
masak it's essentially a new type of phaser. 20:50
20:52 skids joined
brrt uhm, ok 20:52
can't seem to think why you'd do that
masak oh, the goal is a good one
brrt but i suppose people do want it :-)
lizmat it's one of the USP's of Moose
colomon USP? 20:53
lizmat Unique Selling Point
.oO( sorry, dabbled a bit in marketing at one point in my life)
masak the Moose manual even encourages people to mark attributes lazy whenever they can.
lizmat: you are forgiven :P
dalek rl6-roast-data: a340ef8 | coke++ | / (9 files):
today (automated commit)
20:54
lizmat masak: one could consider making all attribute defaults lazy by default
colomon I like the sound of that… but it does seem like something that is pretty easily done by a module, no?
masak lizmat: something about that feels uneasy, too. like it breaks Least Surprise. 20:55
lizmat colomon: it would interfere with the autogenerated methods
masak lizmat: there's a reason it's not the default in Moose. it could easily have been.
lizmat so pretty tightly bound to the core, I would think
masak lizmat: also, there's a lot of Perl 6 code out there that would break if we did that.
lizmat masak: well, that may be just because they couldn't change it after having enough traction 20:56
masak no, I don't think that's why.
I think it's because it would be surprising.
lizmat has $.fh is lazy = open( $!file, :r ); 20:57
feels like a nice and clear syntax to me
masak aye.
20:58 cognominal joined
brrt for my clarity, is lazy can work on method form twigils, but not in instance varialbe twigils, right 20:59
lizmat yes, this would only apply to public attributes, aka with $.foo rather than $!foo 21:00
brrt ok... hmm
masak I'm surprisingly fine with that.
lizmat making it work on $!foo would make jnthn very unhappy, I would think
rjbs For one thing, having attributes in Moose be eager by default helps you crash early. 21:01
yoleaux 20:27Z <lizmat> rjbs: are you using 'will lazy' atm?
rjbs lizmat: I'm not.
More on why not in a bit.
lizmat ok, cool, since "will lazy" is no more
brrt would the lazy block be applied each time the backing variable is undefined, or just one time?
rjbs has x => (isa => 'Bool', default => sub { ... });
lizmat brrt: just once
21:01 skids left
rjbs If that sub returns a non-Bool, and it's not lazy, you can crash at init time. Good! 21:01
So we only defer if the programmer agrees to trade off that early type check. 21:02
brrt that means you need a state variable to keep track if it has been called before
rjbs The state variable is the storage slot.
brrt no, i don't think it is; the storage slot can be re-undefined
rjbs brrt: We don't undef it, we delete it.
Moose distinguishes set/unset from defined/undefined. 21:03
lizmat my original attempt at implementation was done by auto-generating the accessor method with a -once- block in it
rjbs Your attribute in Moose can be 'Maybe[Int]' in which case undef is also allowed, and your lazy default will return undef and then not be called the second time.
brrt right. but i'm not - at this point - sure whether perl6 does
lizmat that has a hidden state var to make the block run only once
rjbs brrt: Okay.
There was also some talk, around that day, of an "is cached-per-instance" trait. 21:04
lizmat yes, looking at that now
rjbs I have a lot to say on this topic, probably. If it wasn't really long, I'd jus t say "watch my Moose tutorial for everything that is easier in Moose than p6 right now." :-)
I'll try to distill it down to bullets soon. Like, after p5.22 is out.
brrt i was thinking about that one too, and i think it's a horrible idea; but my opinion is just that, an opinion
lizmat brrt: what is a horrible idea? 21:05
brrt is-cached-per-instance
rjbs I think that people are going to write "method xxxx is cached" and then be really confused at some point.
lizmat yeah, but atm the self identity is part of the cache key
so effectively, it *is* per instance atm 21:06
masak sounds like a sane default, too
rjbs Oho, I think that wasn't clear when I looked at it!
Very good to know.
brrt is-cached for methods is not a terribly good idea, i agree
the thing is, what happens when the underlying object changes
lizmat m: class A { method a(*@a) is cached { now } }; say A.new.a; say A.new.a
camelia rakudo-moar 34788b: OUTPUT«Instant:1432156043.663477␤Instant:1432156043.663477␤»
lizmat hmmm... it is not ? 21:07
21:07 khisanth_ joined
lizmat m: class A { method a(*@a) { now } }; say A.new.a; say A.new.a # just checking 21:08
camelia rakudo-moar 34788b: OUTPUT«Instant:1432156154.834639␤Instant:1432156154.838208␤»
brrt hmmm 21:09
rjbs m: class A { my $x = 0; method a { say 1; return $x++ } }; my $a1 = A.new; my $a2 = A.new; say $a1.a; say $a1.a; say $a1.a; say $a2.a; say $a2.a
camelia rakudo-moar 34788b: OUTPUT«1␤0␤1␤1␤1␤2␤1␤3␤1␤4␤»
rjbs m: class A { my $x = 0; method a is cached { say 1; return $x++ } }; my $a1 = A.new; my $a2 = A.new; say $a1.a; say $a1.a; say $a1.a; say $a2.a; say $a2.a 21:10
camelia rakudo-moar 34788b: OUTPUT«1␤0␤0␤0␤0␤0␤»
rjbs No good.
lizmat maybe we should die on "is cached" on methods 21:11
at least for now
rjbs Also, we must never forget that the spec says that "not caching is a valid behavior on is cached code"
So it can only be used for optimization, never avoiding side effects.
So it's not great for some kinds of lazy, anyway.
lizmat also: speculation is only about caching subs 21:12
21:12 colomon left
rjbs speculation? 21:12
lizmat so the fact that you can cache methods atm is really an oversight
rjbs nod
lizmat spec ?
rjbs specification? 21:13
lizmat S06.2019
well, specification is overrated, I'm told :-)
rjbs :)
lizmat 2109 actually
rjbs To me, caching on a method would have to include object identity. But also, I'd be unlikely to use it unless it was a guaranteed cache, so I'm not super invested. 21:14
but if it does not cache based on invocant identity as well as arguments, I predict confusion
lizmat yeah, I'm going to disable it on methods for now
there are no tests for it in roast 21:16
timotimo i disagree with making "is lazy" the default for default parameters 21:19
it goes quite a bit against the cool "our objects are small" thing
if every attribute with a default value/expression has an integer applied to it that governs its lazyness thingie 21:20
.o( or how do we do it? )
lizmat naive implementation would involve a 'once' block in the autgenned accessor
so yes, an extra int for each attribute 21:21
in such a naive implementation
but I think the consensus is already against it, so don't worry timotimo :-)
timotimo ah
i was still backlogging
21:24 vytas joined
dalek kudo/nom: 9fe7e8a | lizmat++ | src/core/Method.pm:
Disallow "is cached" on methods for now
21:25
kudo/nom: 6f4c457 | lizmat++ | docs/ChangeLog:
Mention "is cached" on methods just in case
21:26
21:32 pat_js joined
lizmat rjbs: re irclog.perlgeek.de/perl6/2015-05-07#i_10566001 , it can actually be simpler: 21:32
m: sub a { once { say "hello"; 42 } }; say a; say a 21:33
camelia rakudo-moar 34788b: OUTPUT«hello␤42␤42␤»
lizmat The once block is replaced by its value, so that example becomes:
method fh { once $!fh = open $file }
or if you really don't need it anywhere else in the class, you don't even need an attribute: 21:35
method fh { once open $file }
masak 'night, #perl6 21:41
lizmat gnight masak 21:43
timotimo gnite masak
dalek kudo/nom: 484e9f7 | lizmat++ | src/Perl6/ModuleLoader.nqp:
Use World.DEPRECATED because we now can
21:46
21:49 colomon joined
rjbs lizmat: nod; my gut feeling is that you're teetering on the fence of "too much code" even then; how often would people mark defaults lazy? if very often, then writing that every time is (a) somewhat obscure for the newbie and (b) a pain, even if it's short 21:49
I can't predict how often it will be in p6, of course, but can only go by my past experience. And I'm told that my code is idiosyncratic, so who knows. :)
Dist-Zilla$ ack 'lazy +=> +1' lib | wc -l 21:50
43
lizmat argh, the "once" example actually doesn't work :-(
21:51 raiph joined
lizmat m: class A { method a { once now } }; say A.new.a; say A.new.a 21:51
camelia rakudo-moar 6f4c45: OUTPUT«Instant:1432158707.359631␤Instant:1432158707.359631␤»
lizmat ok, will have to sleep on that one... 21:52
good night, #perl6!
21:58 vytas left
brrt sleep well :-) 22:00
22:03 vytas joined 22:14 eli-se left 22:23 haroldwu joined 22:24 haroldwu left, haroldwu joined
timotimo well, yeah, wouldn't the "once" get cloned when the class gets instantiated? 22:28
m: class A { sub a_value { once now }; method a { a_value } }; say A.new.a; say A.new.a; 22:29
camelia rakudo-moar 484e9f: OUTPUT«Instant:1432160978.207497␤Instant:1432160978.207497␤»
timotimo m: class A { sub a_value { once now }; method a { a_value } }; say A.new.a - A.new.a;
camelia rakudo-moar 484e9f: OUTPUT«0␤»
jdv79 wouldn't the lazy "phaser" do this if it was implemented?
timotimo it *is* implemented :) 22:36
well, it was implemented for a few weeks
dalek osystem: 74dd95b | tony-o++ | META.list:
HTTP Server Threaded
22:41
timotimo cool
jdv79 the entry in Actions.pm makes it looks like its not impl 22:42
timotimo well, it used to be :)
22:45 brrt left 22:49 dolmen left 22:54 skids joined
raydiak .seen cosimo 23:00
yoleaux I saw cosimo 1 Dec 2014 10:37Z in #perl6: <cosimo> connection refused when running panda. known?
raydiak anyone know cosimo or his plans for his modules? I was about to make a quick PR for String::CRC32, then realized that my last PR for it almost 3 weeks ago went unanswered, as well as my .tell here 23:16
looks like he doesn't really do p6 stuff this year so far, and I worry that important building blocks like CRC32 and MD5 might go unmaintained while we're pre-release breaking everything, since I have modules which use at least CRC32 already 23:18
skids Well, I've been keeping Sum:: up to date, but it is slow still. 23:24
And the GLR is likely to require quite some more changes. 23:25
raydiak aye, I was just looking at Sum :)
skids++
timotimo MD5? why would that be important? 23:34
and i would surely not call it a "building block 23:35
"
because it's not fit to build anything with any more :)
skids Yeah should be using SHA2 by now, really. 23:36
timotimo aye 23:37
maybe a bit of keccak
skids Have not gotten to that quite yet. Really the core math should be a separate lib under Crypto:: namespace because it is for more than hashes. 23:41
And then just something that uses it from Sum for SHA3.
(and there will be C libs providing the full keccack range of functionality) 23:42
Kinda waiting for native shaped arrays on that one. 23:43
timotimo well, we have native arrays at least 23:47
but you really want 3-dimensionally shaped arrays
23:48 sftp joined