»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by moritz on 3 May 2013.
woolfy o/ 00:00
colomon \o 00:01
woolfy I LOVE YOU ALL WITH A GREAT HUGH LOVE! 00:04
You are all awesome. You did prove that at YAPC::NA.
colomon hopes that was meant to be HUGE. ;) 00:05
woolfy++
woolfy Nono, hug love. Let's be politically incorrect here. :-) 00:06
colomon oh, I'm good with hugs.
woolfy Yeaaahhh 00:06
colomon I was just worried about this mysterious Hugh guy.
labster woolfy is awesome too
labster .oO ( Hugh was my dormmate at YAPC ) 00:07
woolfy /sHUGH/PUPPY/ 00:09
BRRRR
s/HUGH/PUPPY/
dalek ast: 5f67245 | (Elizabeth Mattijsen)++ | S32-hash/exists-adverb.t:
Added tests for {}:exists:(kv|p), fudged for []:exists:(kv|p)
00:11
colomon rn: say (set <a b c>).grep(/b|c/) 00:18
camelia rakudo b2072f, niecza v24-70-g6314dd4: OUTPUT«b c␤»
lizmat resetting bio clock by going to bed real early& 00:27
colomon good luck! safe home! 00:30
dalek ecs: 448160b | labster++ | S32-setting-library/IO.pod:
document IO copy, rmdir, and unlink
00:35
ecs: 6772d8c | labster++ | S02-bits.pod:
Merge branch 'master' of github.com:perl6/specs
labster Though I wrote that, I'm starting to wonder if functions like dir(), unlink(), etc should actually throw their errors, or just fail instead. 00:37
labster And let sink context cause it to throw in most cases. 00:38
flussence fail makes more sense IMO; if you write something like @tmpfiles».unlink you wouldn't particularly care if one's gone missing in the meantime. 00:40
timotimo_ (also it wouldn't give you a way to figure out which ones were unlinked and which weren't up until the failure 00:41
flussence that's what .map is for :)
timotimo_ sink-failing makes more sense imo 00:42
labster those are good cases 00:46
labster so I'll probably go ahead and change it 00:46
Though it's hard to write. "if it fails, it returns an X::IO::Unlink failure" sounds circular. 00:47
flussence "the failure will be of type X::IO::Unlink"? 00:48
timotimo_ its inner exception will 00:49
eternaleye timotimo_: "If it fails, it will return an X::IO::Unlink exception in an unthrown state" ? 00:53
flussence
.oO( maybe we need a trait_mod:<throws>(::T) )
00:55
s/throws/fails/
eternaleye flussence: Except it doesn't throw, it boxes up an exception in such a way that handling it carelessly makes it throw.
heh, timing! 00:56
.oO( Now I have a mental image of an X::Claymore error, with the string "This end to debugger" )
sorear colomon: it's .tell and .ask 01:00
diakopter: how are you doing?
flussence would be nice if it could be written something like «sub unlink(--> Mu|X::IO::Unlink)», but we're getting into Maybe monad territory now...
colomon sorear: yeah, I figured out what I was doing wrong about five lines later. 01:01
sorear I'm surprised by the lack of a reply to 17:59 < sorear> diakopter: I thought "I'm following jnthn's plan fairly closely" would be a good enough answer
dalek ast: e4136e9 | (Solomon Foster)++ | S02-types/set.t:
Try to bring Set tests closer to current spec.
01:02
dalek ast: ae81359 | (Solomon Foster)++ | S03-operators/set.t:
Fix tests to conform to current spec (I think).
01:54
lue flussence: S02/Built-In Data Types/Polymorphic Types (conjectural) [ we're already in that territory :) ] 02:39
dalek ecs: fce3dd9 | (Brent Laabs)++ | S32-setting-library/IO.pod:
change dir, copy, rmdir, unlink to soft fail rather than throw
03:02
dalek ast: b04d766 | (Solomon Foster)++ | S02-types/ (2 files):
Try to bring KeySet and Bag tests up to spec.
03:08
dalek ecza: db4190b | (Solomon Foster)++ | lib/CORE.setting:
Lots of updates to Set, KeySet, Bag, and KeyBag.

Coercion operators added, simpler .new (as per spec), and corresponding operators tweaked. This set of chances is not yet complete, there will be more soon.
03:11
Tsuki-san Hello 05:03
diakopter sorear: :) thanks for asking; I'm doing okay; we just got home; I have a mild cold; $work tomorrow 06:22
sorear: how are you?
sorear same, pretty much, including the cold. :/ 06:27
I'm just glad I'm not dealing with what Liz & Wendy are :| 06:28
anyway I want to make sure your question is answered 06:29
diakopter yes; it's ok
sorear good 06:31
dalek : f632d9d | (Tobias Leich)++ | / (2 files):
allow var in indirect object context after new/print/say
06:43
: 473e26a | (Tobias Leich)++ | t/test_summary:
do multithreaded tests
sorear is considering hilarious edge cases: "hmm, with shift/reset it's possible to wind up with the same frame on the stack multiple times."
sorear nqp: (-> { say(2) })() 07:01
camelia nqp: OUTPUT«2␤»
diakopter nqp: ({ say(2) })()
camelia nqp: OUTPUT«2␤»
moritz sorear: for you it's a hilarious edge case; for masak it's a bugreport waiting to be written :-) 07:03
FROGGS nqp: (-> $x, { say($x) })( 42 ) 07:04
yoleaux 8 Jun 2013 21:46Z <eternaleye> FROGGS: Sorry for taking so long, but futures and promises can be thought of as 'handles' to asynchronous computation. In C++, for instance, a future is a container-ish-thing, which you get the value from like joining a thread, and the default implementation is done with a thread pool.
camelia nqp: OUTPUT«42␤»
yoleaux 8 Jun 2013 21:46Z <eternaleye> FROGGS: Examples: www.justsoftwaresolutions.co.uk/thr...mises.html
8 Jun 2013 21:46Z <eternaleye> FROGGS: rough p6ification: Future[Int] answer = async do_foo(); other_stuff(); say answer.get() # Returns Int
8 Jun 2013 21:46Z <eternaleye> FROGGS: I read this as "async do_foo will give me an Int in the Future. In the meantime, I'll do other_stuff, then wait until I get the answer"
8 Jun 2013 21:47Z <eternaleye> FROGGS: Actually, a parameterized Future role as the return value of async might work pretty well.
FROGGS uhh, I haz mail
FROGGS .tell eternaleye Future[Int] is a type, for me a proper p6ification would be a trait 07:05
yoleaux FROGGS: I'll pass your message to eternaleye.
sorear yeah 07:07
masak will love playing with shift/reset.
sorear .tell jnthn where I stand so far: gist.github.com/sorear/5747025 07:10
yoleaux sorear: I'll pass your message to jnthn.
sorear (that's a draft design document) 07:11
sorear there's nothing in there about the low-level details, because the low-level details are mostly worked out 07:14
diakopter :)
sorear there is some stuff there which might want to become permanently part of the docs
diakopter sorear: for re-enterable frames, will each routine's entry point check for re-enter mode by a parameter? or is there a special version of each re-enterable routine so the check isn't necessary 07:19
sorear diakopter: check by parameter 07:21
diakopter sorear: what are better names for the unfortunate 3 names? :) 07:23
(srsly)
sorear "unfortunate" mostly applies to "shift" 07:24
which is the last thing you should call a control-flow operator in Perl, but the name is standard and used in real-ish languages like Racket 07:25
diakopter heh. :)
sorear we can probably get away with "reset"; the perl 5 function of the same name is mercifully almost forgotten 07:26
trivia: in an earlier draft of that document I had shift and reset swapped everywhere. that's how mnemonic the standard names are.
diakopter might as well randomly generate names for these.. they'd be just as memorable/meaningful
diakopter nqp::BNCOWKEJT nqp::ZXMNCBVWETUBV and nqp::WEUBVKUXCTWEYXZZA 07:27
:D
sorear I'd rather randomly pick from the ten hundred most often used words in English 07:28
diakopter seriously though, I'm trying to piece together how these would be implemented in moar..
sorear reset drops a cookie on the stack. shift memcpys off all the stack up to the cookie. 07:29
diakopter what if a closure is generated "deep" then its stack is swapped out, then the closure is executed and it tries to bind stuff "upvalues"
diakopter *to 07:30
sorear we don't touch the actual callframe objects 07:31
we just rearrange the pointers to them on the VM stack
the closure holds direct refereces to the frames with upvalues, so it doesn't even see the pointer shuffling
diakopter one suggestion: s/cont/dc/ in the opnames 07:32
nwc10 but implicit to all this working is that callframes are (heap) allocated, and not stored directly on the stack?
diakopter the Java stack, yes. also, yes, the moar stack too
nwc10 that seems to be an unstated assumption 07:33
diakopter for lexicals anyway
sorear nwc10: the parts of callframes that need to be referenced by closures, yes
if nothing gets closed over on a given callframe then it can probably be put on the VM stack 07:34
diakopter locals can be frozen/sublimated O_O
sorear does his best ambivalent larry impersonation
nwc10 sorear: yes, I was just thinking this. More (and this is an optimisation, and right now it's premature)
diakopter sorear: it's working :P
nwc10 the GC has forwarding pointers - right? So, store the things on the stack initially. But if a closure is taken, move them off the stack into allocated structures, and have the things on the stack turn into forwarding pointers 07:35
but, I repeat, this is a conjectural optimisation
sorear diakopter: you think s/cont/dc/ would be an improvement? I started with dc but thought "nah, nobody will guess what dc stands for"
nwc10 Or they'll all object, because the prefer Tesla to Edison? :-) 07:36
diakopter cont is too ambiguous, but dc is cryptic/distinct enough that it names a new thing, imho
sorear nwc10: I'm skeptical. We know at compile time whether a given sub has children that *could* close over it, and my intuition says that if the user bothered to write a nested function, it will almost certainly get used
nwc10 sorear: OK. 07:37
diakopter nwc10: JVM GC? no.. but Moar GC.. sort of, but not like that
sorear diakopter: (cont/dc) hmm. I think I see where you're going here. 07:38
diakopter delcon :D
dlmtdcntntn
sorear that can be jnthn's next branch name 07:39
diakopter nwc10: I suspect it wouldn't be an optimization to use the cpu stack for such things in moar, unless it's *heavily* optimized, native types only, ultra simple control flow, easily-jitted code 07:40
however, I could be *totally* wrong there, given actual experimentation instead of just thought 07:41
sorear using "the cpu stack" for much of anything in a continuation/coroutine/green thread oriented VM is not going to work very well 07:42
for a variety of issues, including:
* poor LLVM support for GC mark data for the CPU stack
* poor Windows kernel support for stack switching
nwc10 yes, also like Perl 5, moar is "stackless" isn't it? In that language level subroutine calls don't recurse at the C level?
sorear * gymnastics required for sigaltstacking 07:43
diakopter nwc10: yes
nwc10 yes. OK. So the language-level "stack" involved is going to be a MoarVM managed thing anyway
sorear etc
nwc10 shuts up and goes back to the Perl 5 code mines :-)
diakopter nwc10: wait :)
nwc10 wait?
I've still got the window open
diakopter heh, one sec, a further question 07:44
re: stackless...
sorear standard-ish practice (used by GHC, for instance) is to set aside a block of memory and treat it like a CPU stack, but explicitly and not using %rsp
GHC-generated code is stackless on the C-stack. when compiling using LLVM, every call is a tail call
nwc10 sorear: yes, I was wondering *that*. Perl 5 does something like that
sorear GHC uses StackTop, StackEnd, HeapTop, HeapEnd registers, which leaves x86 quite cramped :) 07:45
diakopter nwc10: I was planning to use B::Hooks::XSUB::CallAsOp‎ to "invoke" p5 code from xsubs on moar's p5 thread, to keep recursively-cross-VM callbacks stackless on both sides... sound sane?
sorear perl 6 probably does not need to optimize memory allocation to *quite* that extent
nwc10 in which case, it's a trade off about stuffing call frames on that versus explict allocation. And I'll totally agree that the right thing to do *now* is roughly "simplest thing that could possibly work", and worry about optimisations once we have real-world data
I don't know what B::HOoks::XSUB::CallAsOp does 07:46
diakopter nwc10: also, rafl volunteered to make that module re-entrant (it's not at the moment)
basically makes an optree node for an xsub invocation 07:47
diakopter [and what the xsub invokes] 07:47
sorear o/ sqirrel, FROGGS
nwc10 diakopter: I can't find any terse explanation for what that code does 07:48
nwc10 but if I'm guessing right, it seems like it's a way to go 07:49
diakopter it creates a temporary trampoline in the current spot of the p5 op tree that can hold your current xsub invocation
nwc10 and then returns from the XSUB back out to the runloop? 07:49
diakopter yes
nwc10 and at the end of the invoked OP (or OPs), re-enters XS and the XS can exit like nothing special happened?
diakopter yes
but currently it supports only 1 descent per thread 07:50
nwc10 approach seems sane. It's what I thought about a few nights ago
I don't want to comment on the implementation :-)
diakopter :D
sqirrel o/ sorear 07:51
diakopter can't do anything about recursive cross-VM calls that already create their own nested runloops
that's their own problem ;) 07:52
FROGGS hi sorear
diakopter sorear: implementing your spec in moar would be .. straightforward enough.... however, I think jnthn may grouse about it obviating a lot of optimization potential 07:53
unless it's blocked more strongly from non-compiler access
sorear diakopter: it's totally reasonable to restrict portions of it per HLL, or even implement something different 07:54
this spec looks the way it does because 1. it's a well studied API 2. it's a close match to the actual functionality of the JVM stack freezer/thawer 07:55
nwc10 wonders when jnthn will wake up
sorear 2 does not apply to moarvm
diakopter true, I forgot your nqp::xxxx don't actually need to be nqp::xxxx in moar... just moar opcodes 07:56
sorear it would be entirely reasonable for moarvm to implement, say, a "green threads" abstraction instead
gather/take can be implemented on top of green threads as well as it can on delimited continuations 07:57
not all nqp:: ops are available on all backends
the ops I'm designing should be interpreted as "JVM only" until such time as some other backend wants to support them 07:58
diakopter sorear: I have a sneaking suspicion that 1 coordinated extra thread/eventloop per gather descent would be more efficient than the jvmstack/callstack swapping... but I'll wait until you're done to even try to attempt an alternative implementation ;) 07:59
sorear diakopter: I look forward to the comparative benchmarks. 08:00
diakopter the rationale of this truly gut-level suspicion is my sky-high levels of trust/awe in the JVM concurrency efficiency 08:01
oracle jvm, anyway
openjdk, no clue
I have no idea how much of that work is open-sourced to the openjdk
diakopter nwc10: sorry I went dark during yapc... I was .. busy. 08:03
sorear dark? didn't I see you like, constantly? 08:04
diakopter dark to irc/nwc20
nws10
cwc10 08:05
argh.
nwc10
sorear generally managing to be in three places at once, doing an awesome job of keeping the entire conference running 08:05
diakopter meh, actually I abandoned the rest of the team most of the time and just did my own thing; I wasn't really keeping the entire conference running at all... just the banquet/gamenight, really 08:07
and the evening dinners with P6 folk & others
sorear weren't you managing the talk streaming too? 08:08
diakopter I set it up [with plenty of help from others] Monday morning, but left it to Todd & co. the rest of the time; there was no shortage of things for them to do after Monday morning; I don't want to trivialize their efforts in the least; I just needed to hand it off 08:09
dalek ast: 31080f6 | dagurval++ | S11-modules/ (2 files):
Added test for RT 118407
08:10
diakopter sorear: ping 08:13
sorear pong
diakopter why is continvoke necessary? (couldn't it just use the invokehandler repr op of the $cont object?) 08:15
sorear mostly because there is no invokehandler repr op 08:15
JNQP cannot invoke anything unless it either is or contains a CodeRef 08:16
or references
it would be possible to make the continuations directly executable, but it would be rather involved
see: 08:17
irclog.perlgeek.de/perl6/2013-06-09#i_7175787
diakopter so..
these 3 ops wouldn't necessarily ever be manually typed... just compiler generated? 08:18
sorear: oh... yes.
sorear I was planning to manually use them in GatherIter.pm, inside an #?if JVM block
diakopter that's what I meant.. the invokespec thing in jnqp
it's a little different in moar still 08:19
moritz
.oO( still moar different )
sorear is now into the actual coding phase :D 08:21
nwc10 IRC is awkward during conferences 08:22
as is trying to enjoy the conference if also trying to (help) run the conference
tadzik mixing those two is hard enough without IRC 08:30
yoleaux 9 Jun 2013 23:54Z <colomon> tadzik: I hacked around the error so I could get the rest of the smoke test run in. There is something interesting going on here... Several tests are reaching the "tests failing" stage even though their prereqs are failing *their* tests. DateTime::Utils is an example.
9 Jun 2013 23:54Z <colomon> tadzik: When I try to install using panda they detect the problem and fail in the prereq stage as expected.
tadzik oh 08:31
oddness
colomon: I'll try DT::Utils later today 08:32
sorear o/ tadzik
tadzik hey hey 08:34
sorear .ask jnthn Does JNQP have a line length policy?
yoleaux sorear: I'll pass your message to jnthn.
dalek p: 97a0ee6 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files):
JNQP continuations 1/N: SaveStackException and ResumeStatus as interpreted by the current design
08:45
sorear sleep&
FROGGS sleep well sorear 08:47
mathw morning 08:52
mathw This I just saw, that's going to be hard to beat today: "C++ is for software development, not writing web applications" 08:52
flussence
.oO( C++ is for buffer overflows, not SQL injection! )
08:55
masak .oO( I'm a doctor, not a software engineer! ) 08:57
good antenoon, #perl6.
FROGGS hey hey mathw 09:00
hi masak
Pompel masak \o/ 09:01
moritz 'o' 09:02
masak »ö«
moritz masak: this is a friendly reminder that there are still p6cc reviews ahead of you 09:03
mathw hi folks 09:04
lizmat morning #perl6 from a still dark Houston 09:07
FROGGS lizmat o/ 09:09
mathw bright but not sunny here 09:17
colder than I expected
encouraged me to cycle quickly :)
nwc10 the strange warm thing in the sky has got scared and is hiding again 09:20
as if it hasn't rained enough recently
moritz well, at least Saturday was very nice here; has a barbecue on the terrace and stayed out until 11pm 09:22
masak moritz: yes, p6cc reviews sound like a nice priority this week.
moritz: thanks for the reminder :)
kresike hello all you happy perl6 people 09:22
masak kresike! \o/ 09:23
kresike masak, o/
moritz masak: you're welcome
mathw Yesterday was lovely here, I roved around Derbyshire for a while enjoying the landscape of the High Peak and eating ice cream. 09:26
lizmat is jealous 09:27
nwc10 masak: you saw this? irclog.perlgeek.de/perl6/2013-06-10#i_7176792
masak nwc10: no; I haven't backlogged yet. 09:30
nwc10: but a cursory scan does not reveal a rakudobug. only talk about one.
nwc10 Oh, I just meant that *line* :-) 09:31
masak ah. heh. :) 09:32
nwc10 I think that sorear intends to deny you your fun. Or a least, pre-empt it
masak oh, don't worry there won't be any edge cases. :P 09:33
if you *design* to take the edge cases into consideration, all you're really doing is create more complicated edge cases somewhere else. :)
it's masak's waterbed theory of edge cases :P
lizmat resists the urge to jump on the waterbed 09:38
moritz
.oO( lizmat's theory of waterbed tsunami )
09:39
lizmat I've had good results in the far past by making sure edge cases actually are next to the waterbed already, where they don't matter 09:40
e.g. building a dungeon game, the outer wall problem: I just made sure there where all rooms around the edge that you could never get into 09:41
masak ooh
moritz have a row of land mine on the inner side of the outer walls :-) 09:42
moritz has been reading Hunger Games 09:43
lizmat still has to wait 2+ hours for breakfast :-( 09:44
Pompel is hungry too.
Pompel doesn't know why Pompel has the Pompel nick instead of frettled, but will rectify that soon enough! 09:45
masak frettled! \o/ 09:48
dalek p/debug-vars: 706ee90 | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java:
Refactor arg and variable handling for local variable annotations
09:52
dalek p: 706ee90 | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java:
Refactor arg and variable handling for local variable annotations
10:04
p: 35d62ba | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java:
Merge branch 'debug-vars'
nwc10 JimmyZ: \o/ 12:37
dalek kudo/nom: dfe2b43 | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Some shifting in candidate order to make searching easier
12:48
kudo/nom: 39e5fdf | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Make sure that [*]:(kv|p|k) pass on their values
lizmat how can a candidate such as "multi method postcircumfix:<{ }>(:$kv!) { self.kv }" be invoked? 12:49
isn't that covered by "multi method postcircumfix:<{ }>(\SELF: Whatever, :$kv!) is rw {" ? 12:50
JimmyZ nwc10: hello 12:52
jnthn %h{}:kv 12:54
yoleaux 07:10Z <sorear> jnthn: where I stand so far: gist.github.com/sorear/5747025
08:34Z <sorear> jnthn: Does JNQP have a line length policy?
lizmat hmmm,,, then there are no tests for that
jnthn it's the zen slajs
um
slice
lizmat so how is that different from %h{*} ? 12:55
nwc10 nothing vs everything?
jnthn I think it's the same
lizmat not as far as the candidates are currently implemented
jnthn r: my %h = a => 1, b => 2; say %h{*}
camelia rakudo b2072f: OUTPUT«1 2␤»
jnthn r: my %h = a => 1, b => 2; say %h{}
camelia rakudo b2072f: OUTPUT«("a" => 1, "b" => 2).hash␤» 12:56
jnthn oh. :)
lizmat indeed
jnthn Well, wonder if that's to spec... :)
lizmat that candidate just says { self }
jnthn That may be correct
[Coke] (RT) looks like it's an rt bug, robrt is pinging the RT folks.
lizmat looks up specs about the zen slice 12:57
[Coke] rakudo: sub foo(--> NoSuchType) { say "OH HAI" } # RT 77270 13:14
camelia rakudo b2072f: OUTPUT«===SORRY!===␤Type 'NoSuchType' is not declared␤at /tmp/uAYz4pTVgd:1␤------> sub foo(--> NoSuchType⏏) { say "OH HAI" } # RT 77270␤» 13:14
lizmat rn: my %h=a=>1,b=>2; say %h{}; say %h{*} # shouldn't they be the same? 13:15
camelia rakudo b2072f: OUTPUT«("a" => 1, "b" => 2).hash␤1 2␤»
..niecza v24-71-gdb4190b: OUTPUT«{"a" => 1, "b" => 2}␤1 2␤»
[Coke] Any lurkers looking to help out, going through tests marked testneeded and extracting the perl6 needed to make a test is verrrry helpful and folks will be happy to help you get your patch in shape. 13:16
[Coke] rakudo: ~[]<c> 13:17
camelia rakudo b2072f: OUTPUT«postcircumfix:<{ }> not defined for type Array␤ in method Str at src/gen/CORE.setting:10160␤ in method Str at src/gen/CORE.setting:876␤ in method Stringy at src/gen/CORE.setting:885␤ in sub prefix:<~> at src/gen/CORE.setting:1272␤ in sub prefix:<~> at src/gen/…
[Coke] rakudo: ~5<c>
camelia rakudo b2072f: OUTPUT«postcircumfix:<{ }> not defined for type Int␤ in method Str at src/gen/CORE.setting:10160␤ in method Str at src/gen/CORE.setting:876␤ in method Stringy at src/gen/CORE.setting:885␤ in sub prefix:<~> at src/gen/CORE.setting:1272␤ in sub prefix:<~> at src/gen/CO…
[Coke] rakudo: ~5{'c'}
camelia rakudo b2072f: OUTPUT«postcircumfix:<{ }> not defined for type Int␤ in method Str at src/gen/CORE.setting:10160␤ in method Str at src/gen/CORE.setting:876␤ in method Stringy at src/gen/CORE.setting:885␤ in sub prefix:<~> at src/gen/CORE.setting:1272␤ in sub prefix:<~> at src/gen/CO…
[Coke] r: say "{297+364+1-88} RTs" 13:20
camelia rakudo b2072f: OUTPUT«574 RTs␤»
lizmat rn: my %h=a=>1,b=>2; say %h{}:delete; say %h # shouldn't :delete work on %h{} as well? If %h{}:x is the same as %h{*}:x ? 13:21
camelia niecza v24-71-gdb4190b: OUTPUT«{"a" => 1, "b" => 2}␤{"a" => 1, "b" => 2}␤»
..rakudo b2072f: OUTPUT«("a" => 1, "b" => 2).hash␤("a" => 1, "b" => 2).hash␤»
lizmat labster: I'm seeing a lot of set/bag related tests fail, is that expected? 13:41
moritz lizmat: colomon updated lots of those tests 13:42
masak lizmat: I think %h{}:delete should zen-delete all the keys, yes. 13:49
moritz I don't think so
if you build up a list of keys to delete 13:50
and it's empty
you usually want to delete no keys, not all
masak zen slices are syntactical.
moritz they are?
what do they desugar to?
masak zen slice != empty slice because a list evaluated to empty
I can prove this.
r: my @a = 1, 2, 3; say @a[]; my @empty; say @a[@empty]
camelia rakudo b2072f: OUTPUT«1 2 3␤␤» 13:51
masak moritz: what do they desugar to? "take all the elements", I guess.
but that feels kinda beside the point.
moritz r: sub f(|a) { a.perl }; say f(); say f(my @ = ())
camelia rakudo b2072f: OUTPUT«Capture.new( list => ().list, hash => EnumMap.new())␤Capture.new( list => ().list, hash => EnumMap.new())␤»
jnthn :() is different to :(Positional) 13:52
masak they're syntactical, is the point.
jnthn Not syntactical really
moritz then I retract my objection 13:53
jnthn I mean, %h{} boils down to %h.postcircumfix:<{ }>(), whereas %h{@empty_thing} is %h.postcircumfix:<{ }>(@empty_thing) 13:55
masak jnthn: oh, ok. 13:56
jnthn Which is distinguished by the multi-dispatch. 13:57
masak jnthn: yes, that's not syntactical exactly. it's kind of a wrong-but-still-accurate way to explain it ;)
jnthn wrong but accurate?! :P
masak yes -- weird combination, huh? :)
masak "you're right, but for the wrong reasons!" 13:58
jnthn
.oO( your mom is <wrong but accurate statement here> ) :P
masak jnthn: ...this is supposed to be the family-friendly channel... :)
jnthn
.oO( your mom is family friendly )
13:59
nwc10 :-)
JimmyZ ;) 13:59
masak :)
lizmat labster: I meant colomon :-) 14:00
colomon I tried to pre-fudge many of the set test changes for Rakudo, but I may have missed some. 14:02
dalek kudo/nom: d14d6f9 | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Simplify {*}:(kv|p|k|v) to self.(kv|pairs|keys|values)

as the value specified doesn't really matter in this case, and it is the same as the zen-slice logic.
lizmat is preparing to go off to the airport 14:03
will give a go at fudging them there
unless someone beats me to it
lizmat travelling& 14:05
diakopter yoleaux: www.sportsfirings.com/?p=10106 14:18
.help 14:19
yoleaux diakopter: I'm yoleaux. Type .commands to see what I can do, or see dpk.io/yoleaux for a quick guide.
diakopter .title www.sportsfirings.com/?p=10106 14:20
yoleaux Random notes on YAPC 2013. « Whipped Cream Difficulties
diakopter .title www.sportsfirings.com/?p=10111 14:21
yoleaux No Sleep Till Sunday. « Whipped Cream Difficulties
diakopter two neat posts on yapc austin 14:21
masak who's the author? I don't see a name on those pages. 14:22
diakopter "stainles" ? 14:23
[Coke] masak: www.sportsfirings.com/?page_id=314
diakopter Dwight Brown, maybe
masak ok. 14:24
no worries; just curious.
diakopter .title plus.google.com/107131450772859671581/about 14:25
yoleaux Dwight Brown - About - Google+
masak popular vote: "intricacies" -- stressed on the first syllable, or the second? 14:28
moritz second! 14:29
[Coke] I just said it out loud a dozen times, sounded like equal stress. 14:30
colomon I'm thinking first -- at least, if I exaggerate the stress, doing on the second sounds bizarre to my ear. But yeah, pretty close to equal as I say it normally. 14:31
geekosaur slight stress on the first syllable 14:33
kresike bye folks 14:36
jnthn votes first 14:36
masak .oO( this vote result contained more intricacies than I expected... )
diakopter first 14:37
(2nd stress: 4th syllable)
[Coke] votes often
geekosaur nb. I would *not* be surprised if Commonwealth English differs from American here; somehow, stress on the second syllable "feels" British to me
timotimo_ does the 2nd, but is not native
brrt votes 2nd, 1st doesn't sound 'natural', not native 14:38
[Coke] tl;dr - say it however you like. at worst, people will think you have an adorable accent. 14:38
masak wow, people really are divided on it.
while we're on the topic: "gist" -- soft g or hard g? :) 14:39
masak votes hard g
jnthn hard, same as git :)
masak I'm talking exclusively about the pastebin-y thing, if that helps.
timotimo_ i say "djist"
masak that would be a soft g. 14:40
diakopter it's soft...
geekosaur I pronounce with soft g because that's how the English word is pronounced
brrt hard g
brrt is unsure what english-people mean by 'hard g'
diakopter that
btyler soft, same reason as geekosaur
brrt and 'soft g
'
geekosaur also, fwiw, the Mac dictionary agrees with me that American English stresses the first syllable of "intricacies"
diakopter brrt: "get" 14:41
(hard)
brrt ok
diakopter soft: giraffe
geekosaur but again I will repeat that Commonwealth English is likely to differ
brrt i see
in dutch a 'hard' g is really a hard one
like in 'scheveningen' (the first one)
diakopter gist is... soft always 14:42
I was surprised to hear someone say ghist
at yapc austin
brrt hmm
maybe soft gist is acceptable as well
masak diakopter: that was me, in the car to the airport ;)
jnthn diakopter: I say it just the same way as masak, fwiw :) 14:43
[Coke] I pronounce gist.github.com with a hard g, but "the gist of it" with a soft g.
brrt the github site threw me off
colomon gist is a word, pronounced with a soft g, right? like jist
masak diakopter: I guess it really depends if you came at the word thinking "oh, it's that word from English", or thinking "oh, it's a derivation of 'git'"
brrt natural 'british' would be soft
jnthn Right, I would use a soft g for the English word "gist"
geekosaur thinks that gist.github is a pun that only works in print
diakopter [Coke]: but gist.github.com is.... the direct meaning of the english "gist"
I didn't think it was a pun 14:44
masak diakopter: how can you be sure?
jnthn Oh, I saw it as a cute pun :)
geekosaur sure it is, it's mixing gist with gi(s)t
[Coke] diakopter: I'm not trying to rationalize anything, just telling you what my brain is doing.
brrt in the context of Git it is natural to say gist with a hard G
geekosaur but the differing pronunciations throw it off in speech; it only works in writing
diakopter well, I should note that I've heard people pronounce the non-github gist with a hard g, too 14:45
same person who insists that the phrase is "get your goat", fwiw
colomon diakopter: yeah, me too.
[Coke] diakopter: get your goat as opposed to? 14:46
geekosaur gist is soft g, per dictionary and derivation (Latin via French, original 'jacere')
(or 'iacere' if you go with classical Latin...( 14:47
masak diakopter: as opposed to "jet your goat"? :P
diakopter masak: you're a joat
geekosaur :p
colomon diakopter: idioms.thefreedictionary.com/goat 14:48
diakopter sigh. it's goad
colomon diakopter: based on what?
diakopter the meaning of the word
colomon diakopter: that's a very dangerous thing to rely on in English 14:49
[Coke] I have never ever ever heard "get your goad"
geekosaur diakopter, if yiu go by meaning, it would be "be a goad" not "get your goad"
diakopter it's in literature
[Coke] ... until a few lines ago, of course. :)
colomon diakopter: so is get your goat
diakopter it is? 14:50
colomon www.phrases.org.uk/meanings/get-your-goat.html 14:51
diakopter augh 14:52
masak at this point, we might as well discuss the way people abuse the phrase "begging the question", as well.
[Coke] ok, those people are all horribly wrong, I think we can agree on that. :)
masak [Coke]: you can't just *assume* that. that would be... oh wait :P 14:53
(that would be a correct use of "begging the question", I guess) 14:54
dalek : 8e4bf11 | (Tobias Leich)++ | t/test_summary:
print header in shell
14:55
: ee7bafe | (Tobias Leich)++ | / (2 files):
show todo and skip
: b29be1c | (Tobias Leich)++ | / (2 files):
run tests threaded and colorize output
: aff0b4f | (Tobias Leich)++ | t/test_summary:
typo
14:56
colomon lizmat: ping? 14:58
dalek ast: a969a24 | (Solomon Foster)++ | S02-types/bag.t:
Refudge for Rakudo.
15:00
jnthn decommute & 15:06
dalek ast: a476b3f | (Solomon Foster)++ | S02-types/keyset.t:
Refudge for Rakudo.
brrt " Building such a virtual machine is a mammoth task typically reserved for software companies like Oracle and Microsoft and VMware" as by wired 15:11
lol
and a bit of anger, too
a virtual machine is something that is bizarrely easy to mess up
not per se a mammoth task
its like people saying the JVM is awesome because G1 (the garbage collector) has a gazillion LOC 15:12
diakopter it can be a mammoth task
moritz aye
brrt no, its a task that is more difficult than your typical CRUD and thus leaves more people afraid of it 15:13
it need not be a mammoth task
a startup-sized team of capable people can build one
diakopter it doesn't saying "building a VM"
brrt exhibit a: MoarVM
diakopter it says "building such a VM" 15:14
brrt well, context here is a VM for PHP
colomon anything can be a mammoth task if you put your mind to making it big.
PerlPilot colomon++
yoleaux 17 May 2013 01:39Z <[Coke]> PerlPilot: can you get Grammar-Profiler-Simple passing its tests so we can cut a star release?
brrt true
moritz according to www.ohloh.net/p/parrot the effort for parrot was 76 years, and it still leaves a lot to whish
brrt thats the part where i said 'there are many things you can do wrong 15:14
'
which you can
brrt but to be fair, parrot isn't much worse than, say, CPython 15:15
dalek ast: 5a13078 | (Solomon Foster)++ | S02-types/set.t:
Refudge for Rakudo.
15:24
diakopter brrt: that's a good article on Wired, imho 15:27
[Coke] PerlJam: that was an old message, I think.
brrt: url? 15:28
brrt coming on 15:30
www.wired.com/wiredenterprise/2013/...-saga/all/
have fun
brrt off
(it is good and interesting, but it is a bit annoying to see people stating that some projects are 'superhuman'. that is glorifying some developers and demotivating many others) 15:31
raiph Chip++ www.reddit.com/r/perl/comments/1g1p...nd_concat/
brrt (garbage colelectors, compilers, virtual machines are all sensitive to that)
brrt really off now 15:32
diakopter .tell brrt frankly, I think those project types are actually superhuman, at least in the attention to detail and skill and training required, if not actual code size 15:35
yoleaux diakopter: I'll pass your message to brrt.
diakopter .. just like chip design and operating systems and other machines 15:36
I mean, to be anti-elitist (otherwise) is to claim that all developers are equally good and qualified to do every project..? or are there superhuman projects... just not virtual machines? 15:39
moritz wastes quite some time on wrestling with the DOM in JS 15:41
diakopter raiph: does dots.pm make $foo->() into $foo.() ? 15:44
[Coke] moritz: are you using a tool like jQuery to simplify the wrestling? 15:45
moritz [Coke]: yes
[Coke]: it still drives me nuts; not properly knowing JS doesn't help :( 15:46
for example in my naivety I assumed that for (i in ['a', 'b', 'c']) { console.log(i) } would log a\nb\nc\n 15:47
over the weekend I've patched the IRC logs to load the summary information with ajax once summary mode is enabled 15:49
(mostly to make it more cache friendly)
moritz so that involves making an ajax call, constructing some table cells, inserting a row into a table, and pre-checking some check boxes 15:50
not too complicated? no, but it still took me several hours :/
and all in all it didn't even become a large patch: github.com/moritz/ilbot/commit/172...0dac229d13 15:51
raiph diakopter: I haven't read the patch but Chip wrote "As discussed at YAPC, this patch adds the pragma "use dots" allowing users to 15:54
write . instead of -> in all places."
raiph and 14 upvotes and zero downvotes on /r/perl in first hour is good to see 15:56
moritz maybe I should hang out in #jquery and see what the FAQs are :-)
pmichaud good morning, #perl6 16:02
PerlJam raiph: I could've sworn that someone else had already written code and submitted a patch to p5p for just that. 16:11
timotimo_ moritz: how do you feel about adding a small image to the header of the irc log index to give a context of how the x axis is scaled? 16:11
timotimo_ maybe a picture at the very top that displays year-broad stripes of grey shades with the year number in small letters inside if they are big enough or something like that 16:12
how much data is in the activity graphs btw?
timotimo_ afk's 16:16
jnthn home 16:23
morning, pmichaud
jnthn .tell sorear the proposal looks good. Concern is mostly naming of the nqp:: ops. Unfortuantely, a name with "cont" puns badly with ops like nqp::iscont (which refers to containers). 16:42
yoleaux jnthn: I'll pass your message to sorear.
diakopter jnthn: did you see our discussion of that? 16:43
jnthn .tell sorear given these ops are probably only used in a handful of places, we could just spell out "continuation" in the name; it's huffmanly OK to do that.
yoleaux jnthn: I'll pass your message to sorear.
timotimo_ .o(look at him, he's so huffmanly!) 16:44
FROGGS .o(look at him, he's so huffmanly OK!) 16:45
jnthn diakopter: Yes. On the invocation stuff, it'd still be possible to set up a code object that, when invokes, does the nqp::invokecontinuation op on the appropriate thing.
diakopter yeah
jnthn diakopter: Though on Moar it's easy enough to set up custom invocation handlers already...
diakopter I meant the naming though 16:46
jnthn Invoke is really st->invoke
FROGGS who/what is preflex? 16:46
diakopter www.haskell.org/haskellwiki/IRC_channel#preflex 16:47
preflex: list 16:48
preflex Botsnack: [botsnack]; Cdecl: [cdecl]; 8ball: [8ball]; excuses: [excuse]; Factoid: [+, -, ., ?, delete, get, store]; Help: [help, list]; Karma: [++, --, karma, karmabot, karmatop]; Nickometer: [nickometer]; Nickr: [nickr]; PlokiRE: [re]; Seen: [seen]; Sixst: [6st]; Tell: [ask, clear-messages, messages, tell]; Rot13: [rot13]; Quote: [be, quote, remember]; WCalc: [calc, wcalc]; Version: [version];
XSeen: [xseen]; ZCode: [zdec, zenc]
jnthn diakopter: On naming, I think using the full word "continuation" gives enough context to use the "standard" names for the things.
FROGGS karma jnthn
diakopter preflex: karma jnthn
preflex jnthn: 3753
FROGGS preflx: karma jnthn
jnthn diakopter: If we pick non-standard names then the ops will just mean nothing to those who do already grok delimited continuations as well as those who don't. :)
FROGGS k
awesome!
jnthn preflex: karma jonathan 16:49
preflex jonathan: 2125
FROGGS diakopter: thanks
jnthn Hah! I'm beating him!
FROGGS *g*
preflex: karma FROGGS
preflex FROGGS: 87
FROGGS ewww
diakopter jonathan: no, he's beating you!
[Coke] preflex: karma Coke
preflex Coke: 2249
[Coke] preflex: karma [Coke]
preflex [Coke]: 191
diakopter preflex: karma au
preflex au: 63
diakopter preflex: karma audreyt
preflex audreyt: 47
diakopter preflex: karma TimToady
preflex TimToady: 360
diakopter preflex: karma lwall 16:50
preflex: karma larry
preflex: quote TimToady
preflex doesn't like me anymore 16:51
preflex lwall: 415 16:52
larry: 57
no quotes found for TimToady
cognominal Perl 6 Ints have been created to support jnthn karma because there will be a day when he will not fit in a 32 bit register. :)
diakopter preflex: karma (Tobias Leich)
preflex (Tobias Leich) has no karma
tadzik hello #perl6 16:53
cognominal s/he/it/
diakopter preflex: karma Tobias Leich
preflex Tobias Leich: 82
colomon member:preflex: karma Solomon Foster 16:56
preflex: karma Solomon Foster
preflex Solomon Foster: 369
rjbs jnthn++ 17:13
diakopter++ 17:14
diakopter ? :) 17:20
diakopter rjbs: I thought your reply to dots.pm was good. It seems like the sort of pragma for newly written code, not existing code you would want to translate to that style. 17:22
rjbs diakopter: I appreciated your poise in your moar talk. 17:23
I think that "cui bono?" is the big question for dots.pm for me.
I'm not sure it's good for new users or hurried experts.
but the discussion only just kicked off, plenty of time to be convinced 17:24
diakopter $foo.() is definitely p6-y, but it doesn't fit with the overall "industry standard" rationale 17:25
rjbs nwc10 remarked that 'industry standard' is a bit of a confusing term here, as -> is standard for deref, but . for methods 17:34
and what p5 does is kind of a mess to begin with, semantically there :)
dalek rl6-roast-data: 62e6c92 | coke++ | / (4 files):
today (automated commit)
17:43
rl6-roast-data: 4a9576d | coke++ | / (4 files):
today (automated commit)
[Coke] colomon: niecza went from 14 failures to 73. 17:43
colomon huh
[Coke] er, 16 -> 73 17:44
colomon oh, well... that still sucks
[Coke] roast is at 5a13078, niecza was at db4190b
github.com/coke/perl6-roast-data/b....out#L5845 17:45
colomon maybe should have spectested before going to bed
[Coke] S03-operators/bag.t aborted 50 test(s)
colomon of course, the one file I didn't test last night. 17:46
well, I'll have it fixed sometime here.
[Coke] :)
hokay. Thanks! 17:47
colomon but probably not in the next 90 minutes.
[Coke] you have about 22 hours! ;) 17:49
BenGoldberg r: my @a := 1..Inf; my @b = @a; @a.perl.say; 18:05
camelia rakudo b2072f: OUTPUT«1..Inf␤»
BenGoldberg r: my @a := 1..Inf; my @b = @a; @b.perl.say;
camelia rakudo b2072f: OUTPUT«(timeout)»
BenGoldberg is confused. 18:07
timotimo_ = is eager assignment
er, waiy, what? 18:08
BenGoldberg The = makes a copy, right? 18:08
jnthn Well, more precisely it places the range into the unreified portion of @b 18:20
dalek : 17d54c6 | (Tobias Leich)++ | t/test_summary:
removed &nbsp;, strip non-utf8
18:27
: ebb8cf6 | (Tobias Leich)++ | / (2 files):
added fresh_perl_is
pmichaud 18:05 <BenGoldberg> r: my @a := 1..Inf; my @b = @a; @b.perl.say; 18:47
more precisely, @b.perl is probably infinite right now.
r: my @a := 1..Inf; my @b = @a; say 'alive';
camelia rakudo b2072f: OUTPUT«alive␤»
pmichaud r: my @a := 1..Inf; my @b = @a; say 'alive'; say @b 18:48
camelia rakudo b2072f: OUTPUT«(timeout)alive␤»
pmichaud r: my @a := 1..Inf; my @b = @a; say 'alive'; say @b.infinite
camelia rakudo b2072f: OUTPUT«alive␤True␤»
pmichaud apparently .gist on Arrays doesn't know about infinities 18:48
labster good still-technically-morning, #perl6 18:59
PerlJam It's always morning somewhere :) 19:01
labster yeah, but it's now afternoon here :)
preflex: karma labster 19:02
preflex labster: 69
labster nice to have a karmabot again
PerlJam preflex: karma perljam 19:04
preflex perljam: 192
PerlJam wonders where the karma was seeded from
diakopter PerlJam: I think it's just been around a while
PerlJam maybe so.
sorear good * #perl6 19:14
yoleaux 16:42Z <jnthn> sorear: the proposal looks good. Concern is mostly naming of the nqp:: ops. Unfortuantely, a name with "cont" puns badly with ops like nqp::iscont (which refers to containers).
16:43Z <jnthn> sorear: given these ops are probably only used in a handful of places, we could just spell out "continuation" in the name; it's huffmanly OK to do that.
masak sorear! \o/ 19:16
FROGGS sorear o/ 19:16
Teratogen howdy howdy howdy
masak +1 on "continuation" 19:17
sorear jnthn: what do you think of diakopter's s/cont/dc/ suggestion?
jnthn sorear: It's a little terse, imho 19:18
masak "a little"? :) 19:20
diakopter there, "a little" simply means "too"
labster "a ltl"
colomon sorear! jnthn! masak! diakopter! FROGGS! \o/ 19:21
FOAD colomon! 19:22
colomon FOAD? 19:23
FROGGS \o/
sorear backlog succeeded
FOAD Just getting into the spirit of the thing, you know.
colomon FOAD! \o/ 19:24
lue spirit is important 'round these parts :)
FOAD :)
masak FOAD! \o/ 19:25
FOAD And now that I am talking anyhow, is there anything a not-very-good Perl 5 programmer can do to help Perl 6 along?
masak!
masak there's plenty to do.
but it's hard to communicate exactly what, to a newcomer. not enough common language. 19:26
sorear colomon: this isn't the first time you've done member:foo. I'm curious now
FOAD Okay. Where do I start?
masak best is to just follow -Ofun, and do what you like.
timotimo_ FOAD: i knew nothing of perl5 when i started and i made something that jnthn mentioned in a talk at yapcna! so the "rags to riches" thing that the americans dream of can totally come true in this community!
masak FOAD: download Rakudo, write 100 one-liners, get to know the language.
masak FOAD: submit bugs (or ask here) as you find things. 19:26
FOAD: read the spec. think about how to use Perl 6 for different things. write your first module and upload it. enjoy this cool language. 19:27
FOAD: suggest missing documentation. suggest missing modules.
colomon sorear: when I cut and paste text in my IRC client, it pulls up the member thing automatically. thing is, I don't remember that ever happening until last week.
masak FOAD: fix your first Rakudobug :)
FOAD Ok wow that's a ton of suggestions. :) 19:28
sorear jnthn: the line length question stands 19:29
FROGGS ahh, feels good to improve my own toolchain... I can now see what tests pass/fail compared to the last run (while running the test, with colors for good/bad changes) 19:31
colomon \o/
timotimo_ yays!
FOAD I'll see what I can do, thanks.
labster Do whatever is fun to you, FOAD. 19:32
I started writing modules six months ago, and followed it all the way into the rakudo core.
FROGGS ITS A TRAP! 19:33
labster it is. but a very fun trap
Like an MMO that sucks away all of your time by being so fun.
jnthn sorear: No, there's not a policy, but if you write a 5000 char long line I will probably be like, "wtf" :)
lue has yet to jump into the rakudo core, but really really should sometime soon 19:34
jnthn sorear: I certainly haven't stuck to anything strict. But given the font size I need to work at, I actually can't fit all that many chars on a line ;)
labster ... but I need my variable to be 5000 characters long to do proper reverse double expanded hungarian notation 19:35
lue
.oO(How else am I supposed to attach a SHA1 checksum of the variable name to the end of the variable name? Uniqueness is critical!)
FROGGS labster: variable names are not allowed to be longer than the distance of jnthns eyes! (including sigil and following infix...) 19:36
timotimo_ let's turn single static assignment into *constant* signle static assignment and make it all content-addressed!
PerlJam labster: is this what's become of perl poetry? now, each variable name tells a story? 19:37
timotimo_ Slang::Shakespeare?
colomon ponders how much information can be encoded in 5000 unicode characters.... 19:38
labster mine class Foo { hath $!bar; }
lue
.oO(my $integermeanttoindicatethenumberofcrashesretrievedfromtheconfigfilewhichIhadtoincludeonedaybecauseIreally ...)
sorear please, separate your words. 19:43
timotimo_ yeah, perl6 has -, _ and ' 19:44
should be enough for everybody!
sadly no unspace inside identifiers ;)
[Coke] FOAD: find tickets that could be closed if only we had tests and test them 19:45
timotimo_ there's a pre-made search query for that *somewhere* i hope!
lue hopes people realize separation was omitted for comedic purposes
dalek kudo-star-daily: 32beb6b | coke++ | log/ (5 files):
today (automated commit)
kudo-star-daily: be132ca | coke++ | log/ (5 files):
today (automated commit)
kudo-star-daily: abe5386 | coke++ | log/ (5 files):
today (automated commit)
lue rn: my $a = Mu.new; say so $a;
camelia rakudo b2072f, niecza v24-71-gdb4190b: OUTPUT«True␤»
[Coke] timotimo_, FOAD : rakudo.org/rt/testneeded 19:46
timotimo_ was that added very recently?
lue S02:4663 implies I can't instantiate a Mu, but rakudo and niecza allow it. Who's right? 19:47
[Coke] like a year go
*ago
timotimo_ okay first: are there more of those? second: why isn't there a huge banner somewhere that displays those short links?
[Coke] timotimo_: banner where?
timotimo_ irc topic perhaps, rakudo.org perhaps 19:48
[Coke] rakudo.org/tickets/
which is the "Bug Tracker" link in the main nav.
timotimo_ why have i never seen this? ;_;
[Coke] lue: the parenthetical makes it "clear" that that's conjectural. 19:49
lue Yes, but having something like "can you create an instance of a Mu object" be undecided bugs me. (For the record, I don't see any reason to make Mu a special case, and not allow it to be instantiated) 19:50
sorear i've been burned far too many times by that 19:52
$uninitialized_variable.new() ought to die
not return a defined object of type Any
FOAD Thanks [Coke].
labster rakudo seems to handle >10000 character identifiers just fine. of course, my eyes don't. 19:54
jnthn o.O
While I'm relieved, the rakudo bug woulda been just great. "Rakudo doesn't support 100 KB long identifiers" 19:55
lue labster: can rakudo support variable names larger than 0xFF_FF_FF_FF (or 0xFFFF_FFFF_FFFF_FFFF) bytes ? :P 19:56
flussence r; say eval("my ${'a' x 99999999999}"); ...nah, just kidding :) 19:59
masak NO LIMITS 20:04
lue That's funny, a variable with name 'a' xx 0xFFFF_FFFF seems to hang and cause a steady increase in my RAM usage :) 20:05
(I killed it, by the way, so I'll never know if it would've worked.) 20:06
masak suggests more descriptive but maybe not quite as long variable names 20:10
flussence
.oO( PHP's more consistent than rakudo here - both identifiers and their length are stored as C chars ;)
20:15
sorear lue: you should have used x, not xdx 20:16
xx
lue ah, x doesn't create the list xx does, does it? (I typed ('a' xx 0xFFFF_FFFF).join) 20:17
Still, I have just 4GiB of RAM, so I doubt a 4GiB long name would succeed for me :) 20:18
flussence it's probably at least 8, since you're making an array and a string there...
flussence (maybe .join with no args should simply return a Cat of the original list [assuming that ever gets implemented]) 20:20
lue
.oO(We need to find a large enough (most likely a) server to discover if rakudo can handle >=64bit variable names!)
20:21
masak I'm surprised at rt.perl.org/rt3/Ticket/Display.html?id=105004 . 20:31
if "nothing else derives from it" does not mean "nothing else *can* derive from it", then what point is the spec trying to make?
there's a lot of classes that nothing derives from, and we don't keep pointing that out for them. 20:32
labster But, is there a good reason to say that nothing can derive from Whatever? 20:33
sorear r: my $abcdefghi = 12; say $abcdefghi
camelia rakudo b2072f: OUTPUT«12␤»
sorear looks like rakudo can handle 72 bit variable names
FROGGS labster: hmmm, IMO there is never a reason to forbid these things
sorear masak: I think the point that the spec is trying to make is that it's written by a bunch of people and has an inconsistant level of detail 20:34
masak sorear: at best, that's a meta-point.
PerlJam masak: "...but nothing else [currently] derives from it" 20:35
lue My question is, what is "it" referring to? It could just as easily refer to C<Any>, which changes that part of the sentence from redundant to wrong (the use of the word "but" especially suggests this to me).
labster sorear scores one metapoint, and is in the lead in the metagame. 20:36
PerlJam masak: "..but nothing else [in the standard type hierarchy] derives from it"
masak PerlJam: again, that seems wholly uninteresting to point out.
or at least random and non sequitur-y. 20:37
[Coke] masak: do you care what it says, or you arguing only that since it says what it says anything, it probably means what cognominal read it as?
lue I feel you should be able to derive from Whatever, and that the phrase in question is superfluous.
masak [Coke]: I'm saying either it reads as cognominal read it, or it's useless. 20:38
PerlJam masak: the specs were written by humans. Humans are fallible. Maybe it was just a prosaic accident.
[Coke] masak: my read is that it's useless. 20:38
lue votes useless
masak anyone object to me removing it?
PerlJam masak: nope
(I vote useless too :)
[Coke] (do we have any other java-esque "final" classes hinted at anywhere in the spec?)
masak++
anywhere *else*, that is. 20:39
labster remove +1 20:41
dalek ecs: e33d6c9 | masak++ | S02-bits.pod:
[S02] remove useless information about Whatever

The synopsis pointed out that Whatever derives from Any (which is true), and that nothing derives from Whatever (which is true).
If nothing derives from Whatever, does that mean nothing *can* derive from Whatever? RT #105004 determined that it doesn't.
Then what does it mean? Only that before someone writes a class that derives from Whatever, no class derives from Whatever. While, true, that's not a very exciting statement, and possibly misleading. Removing.
20:42
masak s/While,/While/ # *sigh* 20:43
lue thinks of an "is perfection" trait for those "final" classes [Coke] mentioned
[Coke] thinks "final" is a fine name if we go that route. 20:44
masak thinks "final" is quite incompatible with regular Perl ideals 20:45
...but all is fair if you predeclare :)
labster Yes. Perl should allow you to shoot yourself in the foot if you load the ammo, aim downwards, and pull the trigger. But by default we leave the safety on. 20:46
masak Perl 6 does :) 20:47
lue Perl 6 better let me turn *off* the safety too.
masak agreed. 20:49
sorear have the slides to "Perl of Christmas Past" been posted anywhere?
masak that's why the MOP doesn't try to enforce private attributes' privacy, for example.
(because that would make it very hard to write constructor internals, serializers, and debuggers in Perl 6) 20:50
lue r: class Foo { method new { die "Silly programmer, you cannot derive *me*! Tell {self.^name} to try someone else!" if self.^name !eq "Foo" } }; class Baz is Foo { }; my $a = Foo.new(); $a = Baz.new();
camelia rakudo b2072f: OUTPUT«Silly programmer, you cannot derive *me*! Tell Baz to try someone else!␤ in method new at /tmp/mfCT1xPKz7:1␤ in block at /tmp/mfCT1xPKz7:1␤␤»
dalek ast: 1b0e149 | (Solomon Foster)++ | S02-types/ (2 files):
More Bag tests moved along the the present.
masak lue: (but you *could* derive Foo. you just couldn't instantiate Foo or any of its descendants... until someone overrides .new, that is) 20:52
a concept like "final" isn't very compatible with an über-dynamic language where most things can be changed at runtime. 20:53
lue Yeah. Also it should choke at compile time (instead of runtime). But at least this makes it more work.
flussence make it a module, so you can change the finality at runtime :)
lue
.oO(Once again, an idea that seems to require slangs)
20:54
flussence
.oO( trait_mod:isn't('yours', $errmsg = 'get off my lawn!') )
20:55
sorear Create a virtual base class with a private constructor, set a 'friend' from the virtual base to the class you want final
sorear is looking for the slide of pmichaud with sorear behind him
colomon :) 20:56
masak sorear: caption: "LOL PMICHAUD I HAVE YOUR BACK" 20:57
masak wants to see that now
sorear masak: I think I was just captioned "Perl 6" or something to that effect
masak sorear: yes, I was just dreaming a little :) 20:58
sorear masak: It was in mdk's christmas past keynote
masak I half-remember that picture.
dalek ast: aa647ff | (Solomon Foster)++ | S03-operators/bag.t:
Use new coercers to construct.
21:02
dalek ecza: 3cebbf8 | (Solomon Foster)++ | lib/CORE.setting:
Additional fixes to Bag and KeyBag.
21:03
colomon probably needs more fudging under Rakudo now. :\
jnthn back
tadzik sorear: that was a very nice slide too :) 21:04
fathers of two main Perl 6 implementations
colomon :) 21:05
masak .oO( "Niecza, I am your father." -- "noooooo" ) 21:06
tadzik :D 21:07
ooh
"And here is your Aunt Beru" "nooooo" "And here is you mother Padme" "noooo"
masak :) 21:08
flussence std: -> $dir { $dir.path, {$^a.parent.resolve} ...^ {!$^a.d} } # reverse filesystem breadcrumb list, can I golf this down any? 21:08
camelia std 6348f35: OUTPUT«ok 00:00 46m␤»
flussence (I'm getting nowhere with triangle reduce attempts...) 21:13
timotimo_ i think it's already pretty good 21:14
masak me too.
sahadev hello all 21:16
perl6: my $b = chr 98; say qq{a{$b}c} eq qq{a{chr 98}c}
camelia rakudo b2072f, niecza v24-71-gdb4190b: OUTPUT«False␤»
timotimo_ inside { ... } quotes, {...} interpolation is turned off 21:17
perl6: my $b = "hello!"; say qq{a{$b}c};
sahadev can someone explain me why the closure in the rhs expression above doesn't interpolate? and, the reason behind it?
camelia rakudo b2072f, niecza v24-71-gdb4190b: OUTPUT«a{hello!}c␤»
PerlJam timotimo++ quicker than me :)
timotimo_ er, wait what?
oh, of course
jnthn Nestings of the opener/closer take precedence over escapes in the parser.
timotimo_ the closure doesn't interpolate, but the variable does
flussence
.oO( actually, «... * ~~ '/'» would be more useful than testing for .d since it doesn't depend on the local filesystem - think website breadcrumbs... )
masak r: say 51 * 65536
camelia rakudo b2072f: OUTPUT«3342336␤»
masak r: perl6 -e 'sub breadcrumb($start, &iter, &until) { $start, &iter ...^ &until }; .say for breadcrumb(3342336, * / 2, * % 2)
camelia rakudo b2072f: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/NNZ4lbhKrM:1␤------> perl6 -e ⏏'sub breadcrumb($start, &iter, &until) {␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ …
masak r: sub breadcrumb($start, &iter, &until) { $start, &iter ...^ &until }; .say for breadcrumb(3342336, * / 2, * % 2) 21:18
camelia rakudo b2072f: OUTPUT«3342336␤1671168␤835584␤417792␤208896␤104448␤52224␤26112␤13056␤6528␤3264␤1632␤816␤408␤204␤102␤»
masak flussence: ^^
jnthn sahadev: See github.com/perl6/std/blob/master/STD.pm6#L452 if curious for why it parses that way
timotimo_ does that explain anything? :) 21:19
sahadev :)
thanks jnthn, I will try if I can make some sense out of it
FROGGS hehe
jnthn sahadev: I remeber asking TimToady++ if that was intentional when I was implementing the quote stuff. I forget the exact reasoning, but I think it was something along the lines of "the quoter is fresher in the programmer's mind" or so :)
It's in the logs, if anybody good at searching the logs wants to dig it up.
sahadev ok 21:20
masak sahadev: basically, the quoter sense of {} overwrites the block sense of {}. if you want the latter, don't quote with {}.
jnthn You can choose whatever quoting chars you want, fwiw. 21:20
jnthn perl6: my $b = chr 98; say qq{{a{$b}c}} eq qq{{a{chr 98}c}} # double 'em like this, for example 21:21
sahadev masak: yeah, i see that the closure interpolates when using non-brace brackets as delimiters
camelia rakudo b2072f, niecza v24-71-gdb4190b: OUTPUT«True␤»
FROGGS well, <alpha>'s dont work
:P
jnthn perl6: my $b = chr 98; say qq[a{$b}c] eq qq[a{chr 98}c] # or these
camelia rakudo b2072f, niecza v24-71-gdb4190b: OUTPUT«True␤»
flussence r: say qq:c{{1+1}}
camelia rakudo b2072f: OUTPUT«1+1␤»
jnthn flussence: There you chose {{ as the opener and }} as the closer. 21:22
flussence oops
r: say qq:c{ {1+1} }
camelia rakudo b2072f: OUTPUT« {1+1} ␤»
flussence *shrug*
n: say qq:c{ {1+1} }
camelia niecza v24-71-gdb4190b: OUTPUT« {1+1} ␤»
sahadev i am trying to add perl6-ish interpolation (a simplified version of it) in moe and came across this test in Perl6 roast which failed in moe
jnthn The { and } being treated as nested delimeters takes precedence syntactically, it's not that :c gets disabled.
flussence ah
so... qq:c[ would work there? 21:23
jnthn It's a sequential alternation in the thingy I linked
Yes, but the :c is redundant :)
qq imples :c
If you want a quote language that interpolates closures and nothing else, Q:c[ ... ] would work, for example. Q is the mother of all quotes. 21:24
Or grandpa, or whatever.
:)
lue
.oO(Q is the Mu of quoting constructs)
21:25
colomon errr.... I told rakudo make specitest, and it did this: 21:46
cd t/spec && git pull 21:47
Already up-to-date.
perl t/harness --fudge --keep-exit-code --icu=1 --tests-from-file=t/spectest.data
and now it just seems to be sitting there.
My computer's fan isn't running, so I'm thinking it's not running any tests.
Ideas?
flussence strace it?
FROGGS top? ps ax? taskmanager?
colomon top is showing three perl scripts in positions #4, 5, and 6. 21:48
and control-C on the alleged spectest run makes them go away. 21:49
labster identical thing is happening here 21:55
did something change in the spectests recently? 21:59
FROGGS git bisect might be handy here 22:04
flussence rn: say ?("a" x 103 ~~ /^(aa|aab?)*$/) 22:11
camelia rakudo b2072f, niecza v24-72-g3cebbf8: OUTPUT«(timeout)» 22:12
timotimo_ oh yikes, backtrack-hell?
jnthn Quantified quantified things can lead to such situations. 22:13
flussence seen on www.reddit.com/r/coding/comments/1g2fw3/
jnthn has a similar example and graph of timings in his C# course
flussence the good news is rakudo's using a fairly constant and small amount of RAM running it locally :) 22:14
flussence rn: say ?("a" x 103 ~~ /^(aab?)*$/) # runs quite a lot faster with the constant prefix factored out 22:19
camelia rakudo b2072f, niecza v24-72-g3cebbf8: OUTPUT«False␤»
flussence p5eval: ("a" x 103 ~~ /^(aa|aab?)*$/) # p5 appears to already have this optimisation 22:22
p5eval flussence: No output
pretty-gurl Hello hello hello 22:38
masak pretty-gurl: hi!
masak bye! 22:38
masak .oO( pretty-impatient ) 22:39
dalek ast: eeedf1a | (Solomon Foster)++ | S03-operators/bag.t:
Didn't need the new coercers after all.
22:51
masak 'night, #perl6 22:52
FROGGS gnight masak 22:54
colomon hmmm.... make t/spec/S02-types/keybag.t seems to be taking a Very Long Time under Rakudo... 22:55
colomon rn: my $b = KeyBag.new("a", "foo", "a", "a", "a", "a", "b", "foo"); say $b 22:58
camelia rakudo b2072f, niecza v24-72-g3cebbf8: OUTPUT«keybag("a" => 5, "foo" => 2, "b" => 1)␤»
labster colomon: does that mean you can get 'make spectest' to run now? 23:00
colomon labster: nope, I just started running the set tests by hand to see if they might be the culprits
I don't even start to understand how a hang in one test could cause make spectest to not return any output. 23:01
maybe it's a fudgeandrun problem? 23:02
if I try to prove the .t file directly without fudgeandrun, it gets through 40 tests.
jnthn sleep...hope I will be much more productive tomorrow... 23:03
'night o/
colomon \o
lizmat is "enjoying" another change of itinerary: going from Newark to Amsterdam via Oslo 23:09
sorear lizmat: gonna say hi to arnsholt while there? :) 23:10
lizmat well, I hope that we won't have time to go out of the airport 23:13
we just missed our plane *again* by 10 minutes
our previous flight had delays, but in principle we could still make it 23:14
but at the gate, it took 15 minutes for someone to arrive to get the jetway in place, so we could get out of the plane 23:15
grrrr
diakopter lizmat: :( 23:18
lizmat travelling sucks 23:20
sorear where are you now? newark? 23:25
never having had to deal with anything like this, I have one question: is it also turning into a huge money sink? I assume you have to pay for the two empty chairs that you've flown across the Atlantic? 23:26
census good night masak!
lizmat Newark Liberty
sorear: no, we didn't have to pay anything extra.
census vacation in u.s. after yapc?
lizmat but since we want extra legroom, you can pay for "Economy Plus" with United 23:27
sorear census: not intentionally. lizmat & woolfy are just having WONDERFUL LUCK getting back home
lizmat *that* I had to do again, or run the risk of not being able to upgrade
sorear: except of course an extra hotel night 23:28
sorear s/two empty chairs/four empty chairs/
lizmat yup
sorear momentarily forget about woolfy
pmichaud has spent many hours at newark liberty 23:29
lizmat hehe.. woolfy did a good job holding me back when I exploded after having run through most of Newark Liberty to make it to the gate at the farthest end
only to be told we were too late
lizmat ok, checking in again... 23:30
dukeleto o/
lizmat later!
dalek ast: 36f2bc2 | (Elizabeth Mattijsen)++ | S02-types/set.t:
Slight adaptation in fudge for bag test
23:31
colomon r: say {a => 1000, b => 2}.KeyBag 23:43
camelia rakudo b2072f: OUTPUT«No such method 'KeyBag' for invocant of type 'Hash'␤ in block at /tmp/6I81ywuC1P:1␤␤»