»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:11 ecocode joined 00:12 ecocode left 00:14 ecocode joined 00:19 pupoque_ left 00:44 dayangkun joined 00:45 ppq_ left 01:02 xinming left 01:03 xinming joined
TimToady Gloria sez: "WAT has to be the opposite of DWIM, so if that is Do What I Mean, the other must be What Actually Transpires." 01:04
colomon Gloria++
or should it be Wat Actually Transpires? 01:07
01:10 ecocode left
skids I thought it was "Weapon Aimed at Toe" 01:13
timotimo that's cool :D 01:20
but more like WAAT :3
mst TimToady: but but Wat is a small operative lisp in the style of kernel invented by Manuel Simoni, which now has javascript, perl and python interpreters 01:21
skids "Weapon Aimed Toe-ward"?
mst TimToady: I should know, I wrote the perl one :)
(yes, you can write javascript in perl :)
of course, it being an operative lisp with delimited continuations, 'weapon aimed at toe' isn't a bad description of it if you aren't careful 01:22
runtime macros + continuations -> you too can write code that's dead slow -and- impossible to debug
TimToady we want to make that possible in Perl 6 too :) 01:24
though perhaps not likely
mst operatives are -really- interesting though 01:26
being able to get your arguments as unevaluated expressions makes a lot of things possible 01:27
timotimo is that like what we were thinking "is thunk" would be like?
i have a "use case" for introspecting the code "* %% 10" in "sub foo($a where * %% 10)" - will perl6 let me do that at some point in the future? 01:30
01:35 ecocode joined
TimToady well, in some sense, everything's a macro at some point, just most things degenerate to "normal" evaluation 01:49
colomon is watching Dune for the first time, and Duke Leto was just mentioned. ;) 01:53
01:54 kurahaupo left 01:55 bluescreen__ joined 01:56 bluescreen100 left, woosley joined 01:57 bluescreen10 left, bluescreen100 joined
colomon "Wow, this just got really weird." -- Jen, also watching Dune for the first time 01:57
02:02 dayangkun left 02:05 bluescreen100 left, bluescreen__ left 02:06 bluescreen100 joined, bluescreen__ joined 02:10 raiph joined
TimToady if this is the movie, you should also watch the miniseries, which is...differently better 02:18
skids one of SyFy's better endeavors, yes. 02:19
TimToady and overall better than the movie, in many people's estimations
colomon movie, yes
I've never read the book, either… started one of the later books in the series, was not impressed and quit. 02:20
TimToady ah, well, the earlier books are much better
unfortunately, starts going downhill at about the end of the third book
colomon might just have not understood what was going on… those were the days when books were hard to come by. :) 02:21
skids Back when I read something other than tech manuals, read most of that series. Very enjoyable.
geekosaur first time I read it, I skipped the second book entirely. (being 9, and _Dune Messiah_ being mostly Imperial politics, I was somewhat less than interested)
TimToady well, that's maybe not as bad as I did, reading the 5th book of the Amber series first O_O
[Coke] what would the advantage of "is readonly" be over a constant?
colomon remembers trying to interlibrary loan the Elric books, and getting some other random Moorcock book from them instead. 02:22
TimToady the first Dune is well worth reading
colomon TimToady: I think I read Amber in the order 1 (long pause) 5 (long pause) 1..5 quickly.
[Coke] TimToady++ the frist one is quite good.
colomon Got me very confused about the fate of the different family members. 02:23
geekosaur (I would recommend just pretending everything after the third Dune book doesn't exist) 02:24
TimToady me 2 02:25
dalek rl6-roast-data: 05fed6c | coke++ | / (5 files):
today (automated commit)
02:31
02:42 raiph left
timotimo is javac version 1.7.0_25 too old to build nqp-jvm? 03:03
colomon I'm using 1.7.0_04
(which I'm presuming is older) 03:04
timotimo huh. strange.
first i'm getting warnings about _ perhaps going away in a future release
then i get Exception in thread "main" java.lang.UnsupportedClassVersionError: org/perl6/nqp/runtime/CompilationUnit : Unsupported major.minor version 52.0
could that be because i copied the whole folder over? but i did make clean ..
git clean -xf didn't get rid of the problem i fear 03:05
03:14 raiph joined 03:27 colomon left 03:29 aindilis joined 03:30 jreut joined 03:35 BenGoldberg left 03:40 jreut left 04:04 ecocode left 04:28 ecocode joined 04:31 fhelmberger joined 04:32 raiph left 04:47 raiph joined 04:48 birdwindupbird joined
TimToady masak: re irclog.perlgeek.de/perl6/2013-07-28#i_7379060 STD has already pulled feeds back out from the precedence table into a feed_separator category 04:48
04:51 btyler left 04:59 odoacre joined 05:00 ecocode left
TimToady diakopter: I dunno where you're getting your definition of 'thunk' from, but mine comes from the original Algol definition as an implementation strategy for call-by-name 05:08
looks like the term has since been "modernized" to fit into several other schemes as well :) 05:09
the business of it being a parasite on its original lexical scope only matters because we allow declarations inside of expressions; otherwise it's simply an argumentless closure 05:11
lizmat good *, #perl6!
TimToady so that by necessity any bindings refer to that outer lexical scope just as they would in a normal closure
05:12 bluescreen__ left, bluescreen100 left
dalek kudo/nom: 1f026d9 | (Elizabeth Mattijsen)++ | src/core/Exception.pm:
Match trait error message to already existing spectest
05:22
05:22 fridim_ left 05:26 fridim_ joined 05:30 danaj joined
TimToady regarding 'is readonly', we replaced that with '::=' binding 05:32
lizmat: ^^ 05:33
lizmat :-)
TimToady meaning bind it readonly just as we do paramters
05:34 fridim_ left
lizmat r: my $a =42; my $b ::= $a; $b = 3; say $a # except that is not implemented yet 05:34
camelia rakudo d5523b: OUTPUT«3␤»
lizmat :-(
TimToady oh, it's implement, just wrong :) 05:35
*mented
05:37 SamuraiJack__ joined
lue
.oO(my $a = 42; my $b is rw ::= $a; $b = 3; say $a)
05:39
TimToady lizmat: irclog.perlgeek.de/perl6/2013-07-28#i_7381240 does not look like a rakudobug to me; the initial assignment to the my happens at run time despite the useless use of BEGIN; you'd have to say 'BEGIN my $a = 5;' to get it assigned at compile time 05:41
this is also why 'state' is defined as 'once my $x =' rather than 'my $x = once'
phasers are not retroactive :) 05:42
05:43 SamuraiJack__ left 05:44 fgomez left
lizmat TimToday: I guess that was a small WAT for a big DWIM :-) 05:44
lue: "is rw" on variables is gone too 05:45
diakopter WHEW
lue But... how else am I supposed to make a variable bound with ::= writeable‽‽‽
TimToady [Coke]: readonly variables can be set each time through to something different, just as "readonly" parameters can represent something different each time; a constant can't change after compilation 05:46
lue
.oO(It's not like there's a rw version of ::= or anything.)
05:52
05:54 wtw joined
lizmat hmmm… it appears that the Routine:D, |c fallback trait is shadowing the Mu:D, :$docs trait 05:55
in the case of "sub a is docs" 05:56
05:58 ecocode joined 05:59 raiph left
dalek kudo/nom: c810036 | (Elizabeth Mattijsen)++ | src/core/traits.pm:
Hopefully temporary fix for Mu:D :docs caught by Routine:D |c snafu
06:15
ingy waves o/ 06:19
lizmat o/ ingy!
ingy :)
06:20 SamuraiJack__ joined
dalek ast: 8462413 | (Elizabeth Mattijsen)++ | S06-traits/misc.t:
Unfudge now passing trait mod test
06:25
ast: 0650e78 | (Elizabeth Mattijsen)++ | S14-traits/routines.t:
Fudge now failing test, correct another for current error message format
ast: 8922597 | (Elizabeth Mattijsen)++ | S14-traits/routines.t:
Fix test by limiting to Routine, rather than anything
06:36
06:39 daxim joined
lizmat breakfast& 06:41
06:46 dmol joined 06:56 abnorman left, abnorman joined
masak mornin', #perl6 07:17
lizmat morning masak! 07:18
masak Gloria++ # What Actually Transpires
...and you can say that with a '!?' inflection, and it'll be an excellent expansion of the normal usage of WAT as an interjection :P
lizmat WAT!? 07:23
:-)
07:24 wk joined, daxim left, wk is now known as Guest51798, daxim joined 07:26 rafl joined, Celelibi joined
masak [backlog] TimToady: re irclog.perlgeek.de/perl6/2013-07-29#i_7382191 -- well, I'm thinking about this a lot, because macros/D3 talks about allowing exactly that for macro arguments (through COMPILER:: and other means). i.e. turning a macro argument from a closure into a thunk, which can leak variables back and forth. 07:26
(by which I mean to say that "we allow declarations inside of expressions" might have been the only reason the parasite-hood of thunks matters. but it stops being the only reason once one considers macro arguments.) 07:27
07:34 FROGGS joined
TimToady troo 07:34
FROGGS morning o/ 07:36
lizmat morning FROGGS! 07:37
Q: what is the opposite of nqp::p6list ? 07:38
FROGGS needs to recover a bit from $weekend at $work
lizmat aka, get the underlying RPA from an Array
07:38 daxim left 07:39 rafl left, daxim joined
FROGGS has no idea 07:39
07:39 Timbus joined, Celelibi left
lizmat too bad :-( 07:39
07:40 sqirrel joined, Celelibi joined, rafl joined 07:43 Guest51798 left 07:45 arcterus joined
arcterus lizmat: how about nqp::getattr($list, List, '$!items') 07:47
lizmat (testing, looking good so far) 07:53
07:56 xinming left 07:57 xinming joined
mathw o/ 08:11
lizmat r: my @a; push @a, [1,2]; my $b := nqp::getattr( nqp::decont(@a), List, '$!items'); nqp::push( $b, [5,6] ); say @a.perl # works if there is something in @a 08:12
camelia rakudo c81003: OUTPUT«Array.new([1, 2], [5, 6])␤»
08:13 ecocode` joined 08:14 iSlug joined, ecocode left 08:16 kaleem joined 08:19 ecocode`` joined 08:20 ecocode` left 08:23 kivutar joined 08:30 abnorman left, abnorman joined 08:44 crab2313 joined 08:48 jercos joined 08:53 jercos left 08:54 kivutar left 08:55 kivutar joined 08:56 jercos joined, arcterus left
crab2313 cd /moa 09:16
yoleaux 25 Jul 2013 11:33Z <FROGGS> crab2313: this might fix your issue: github.com/MoarVM/MoarVM/commit/351339dfdc
crab2313 sorry. 09:17
typo
FROGGS np, :o)
crab2313 jnthn++
09:27 pmurias joined
pmurias /connect irc.perl.org 09:27
09:35 xinming left 09:36 dakkar joined 09:37 xinming joined 09:49 abnorman left 10:26 colomon joined 10:27 yoleaux joined, ChanServ sets mode: +v yoleaux
colomon pandabrew broke overnight? 10:27
tadzik did it work before? :| 10:30
colomon I've been using it as part of my smoke tester since a bit before YAPC::NA. Last night was the first time it didn't work. 10:31
lizmat how did it break? Did I break it? 10:33
r: my Int @a; @a.push: "a"; say @a # rakudobug 10:48
camelia rakudo c81003: OUTPUT«a␤»
lizmat r: my Int @a; @a[@a.end] ="a"; say @a
camelia rakudo c81003: OUTPUT«Cannot use negative index -1 on Array+{TypedArray}␤ in method <anon> at src/gen/CORE.setting:11058␤ in any at src/gen/Metamodel.nqp:2663␤ in any find_method_fallback at src/gen/Metamodel.nqp:2651␤ in any find_method at src/gen/Metamodel.nqp:946␤ in block at …
lizmat r: my Int @a; @a[@a.eelems] ="a"; say @a
camelia rakudo c81003: OUTPUT«No such method 'eelems' for invocant of type 'Array+{TypedArray}'␤ in block at /tmp/fBBdywBRLX:1␤␤» 10:49
lizmat r: my Int @a; @a[@a.elems] ="a"; say @a
camelia rakudo c81003: OUTPUT«Type check failed in assignment to '$v'; expected 'Int' but got 'Str'␤ in block at /tmp/6VsTyW_b_X:1␤␤»
lizmat apparently .push is not doing a typecheck
r: my Int @a; @a.unshift: "a"; say @a # rakudobug
camelia rakudo c81003: OUTPUT«a␤»
lizmat and nor is unshift
lizmat submits rakudonug 10:50
sjn should shifting/pushing/etc. really do type checking? 10:52
lizmat and why not? 10:53
moritz it needs to, otherwise one can never be sure that an Array[Blah] only holds Blah objects
yoleaux 28 Jul 2013 22:52Z <lizmat> moritz: wrt to $*W and $/ in Perl6 world: maybe we should add $*W and $/ to the trait mod signature?
lizmat indeed 10:54
moritz and then the whole point becomes moot
"we give you a typed array, but beware that under some conditions it can contain objects of other types". WAT?
lizmat well, I guess we have a case of WAT on our hands now 10:55
lizmat adds some TODO tests 10:56
colomon lizmat, tadzik: gist.github.com/colomon/6103588 # sorry for slow response, pandabrew error message 10:57
lizmat ok, I fixed that one early this morning with github.com/rakudo/rakudo/commit/c810036333 10:58
10:58 iSlug left
lizmat sorry for the noise 10:58
colomon okay, smoke_test relaunched by hand. 11:00
lizmat++
11:04 pmurias left 11:05 rafl left
dalek ast: 08e6adb | (Elizabeth Mattijsen)++ | S32-array/ (2 files):
Add type check TODO tests for .push and .unshift
11:06
11:07 cognominal joined 11:08 Celelibi left, daxim left
tadzik uh. wat 11:09
lizmat no: uh, WAT!?
masak W.A.T.
11:09 rafl joined, daxim_ joined, Celelibi joined
lizmat
.oO( still waiting in anxiety for tadzik's WAT )
11:10
tadzik WAT 11:11
tadzik bows
lizmat: re the new ticket, I don't think we handle typed arrays atm at all 11:12
that was a blocker on JSON::Unmarshal too
jercos So I can't have array of Sunlight?
lizmat r: my Int @a; @a[0]="a" 11:13
camelia rakudo c81003: OUTPUT«Type check failed in assignment to '$v'; expected 'Int' but got 'Str'␤ in block at /tmp/nHUK3t43Yc:1␤␤»
tadzik oh
lizmat tadzik: that's handling it, no?
tadzik :>
it is
r: my Int @a; say @a.WHAT
camelia rakudo c81003: OUTPUT«(Array+{TypedArray})␤»
tadzik r: my Int @a; say @a.of
camelia rakudo c81003: OUTPUT«(Int)␤»
lizmat r: my Int @a; say @a.perl
camelia rakudo c81003: OUTPUT«Array[Int].new()␤»
tadzik :o
is that new?
or am I that old 11:14
lizmat did that the past weeks or so
tadzik ah, that explains it :)
lizmat++
lizmat I mean, the .perl on the typed array
tadzik I can now make JSON::Unmarshal make sense
lizmat the underlying functionality was there already
my Int $a is default(42); say $a; $a=23; say $a; $a=Nil; say $a # also works 11:15
r: my Int $a is default(42); say $a; $a=23; say $a; $a=Nil; say $a # also works
camelia rakudo c81003: OUTPUT«42␤23␤42␤»
lizmat lunch&
11:23 colomon left
masak r: subset OddInt of Int where { +$_ % 2 }; my OddInt $o; say +$o 11:26
camelia rakudo c81003: OUTPUT«use of uninitialized value of type OddInt in numeric context in block at /tmp/vE3ReslfmC:1␤␤0␤»
masak r: subset OddInt of Int is default(1) where { +$_ % 2 }
camelia rakudo c81003: OUTPUT«===SORRY!===␤'OddInt' cannot inherit from 'default' because it is unknown.␤at /tmp/yPM29CGDlW:1␤------> ␤»
masak thinks it'd be nice if that worked (and were spec'd)
11:26 kaleem left 11:28 colomon joined 11:29 kivutar left 11:45 colomon left
lizmat masak: but that would be a special case of "is" on a class, right ? 11:45
r: subset OddInt of Int where { +$_ % 2 }; my OddInt $o is default(1); say $o
camelia rakudo c81003: OUTPUT«1␤»
lizmat is default only works on variables (at the moment, anyway) 11:46
11:47 colomon joined
lizmat r: my Int $a is default("foo"); say $a 11:47
camelia rakudo c81003: OUTPUT«===SORRY!===␤Type check failed in assignment to '$a'; expected 'Int' but got 'Str'␤at /tmp/8RnV7MvDBr:1␤------> ␤»
lizmat *phew*
I guess we could improve on that message 11:48
dalek kudo/nom: f8e970b | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Reimplement List.push using nqp::push()

The old way was most definitely not thread safe: this way, we have one less place to look out for thread safety.
11:53
lizmat .tell jnthn spectests are clean on github.com/rakudo/rakudo/commit/f8e970b1b9 , I can hardly believe it
yoleaux lizmat: I'll pass your message to jnthn.
11:54 stevan_ joined 11:57 stevan__ joined, rindolf joined 11:58 zakalwe left 11:59 stevan_ left 12:00 zakalwe joined 12:03 crab2313 left
moritz lizmat: can you please run my @a; @a.push: 1; @a[0] = 42; say @a after this patch? 12:05
lizmat $ perl6 -e ' my @a; @a.push: 1; @a[0] = 42; say @a ' 12:06
42
12:07 fhelmberger left
dalek rlito: d378d10 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - code cleanup
12:07
12:07 crab2313 joined
lizmat moritz: are you suspecting a problem that wasn't caught by the spectests? 12:08
12:10 SamuraiJack joined, SamuraiJack__ left
moritz lizmat: yes. I don't understand where your patch takes care that it's always containers that are pushed with Array.push 12:12
lizmat I assume it's nqp::push doing that
like nqp::unshift apparently also does (as .unshift was already implemented in terms of nqp::unshift) 12:13
moritz that would be very odd
maybe it's .shift
12:13 yoleaux left
lizmat now that I have you on the horn: what is "nqp::p6listitems(self);" supposed to do? 12:14
moritz it returns a low-level array with all the items in self, I think 12:15
12:15 crab2313 left
lizmat it's not equivalent to "nqp::bindattr( self, List, '$!items', nqp::list() ) if $elems == 0;" ? 12:15
12:15 crab2313 joined 12:17 woosley1 joined
moritz certainly not 12:20
12:20 woosley1 left
moritz it reads from self, it doesn't write to it 12:20
lizmat what use is then calliing it in sink context ? 12:21
(which is what List.unshift does) 12:22
12:23 kaleem joined 12:26 crab2313 left, crab2313 joined 12:31 nyuszika7h joined, nyuszika7h left, colomon left, nyuszika7h joined, nyuszika7h left, nyuszika7h joined, nyuszika7h left, nyuszika7h joined, nyuszika7h left 12:32 nyuszika7h joined, nyuszika7h left, nyuszika7h joined, nyuszika7h left, colomon joined, autumn joined, nyuszika7h joined, nyuszika7h left
lizmat moritz: fwiw, nqp::p6listitems(self) seems to be exactly what I need to have it create the storage for an empty list 12:33
12:33 nyuszika7h joined, nyuszika7h left 12:34 nyuszika7h joined
dalek kudo/nom: 34131db | (Elizabeth Mattijsen)++ | src/core/List.pm:
Tweaks in List.unshift / List.push
12:34
12:35 orafu joined
dalek kudo/nom: 923fe34 | (Elizabeth Mattijsen)++ | src/core/List.pm:
Moved List.(un)shift so that similar functionality is closer in the source
12:37
12:41 btyler joined, sqirrel left 12:45 matthias__ joined 12:46 ecocode`` left, ecocode`` joined 12:48 yoleaux joined, ChanServ sets mode: +v yoleaux 12:53 btyler left 12:57 benabik left
[Coke] LHF: Someone could go through github.com/coke/rakudo-star-daily/...odules.log and open bug reports (or pull requests) for the various failing modules. 12:58
lizmat r: my Int @a=<foo bar>; say @a # yikes! 12:59
camelia rakudo f8e970: OUTPUT«foo bar␤»
masak submits rakudobug 13:02
compile-time checks and constant folding seem very tangled together in cases such as these. 13:04
moritz I'm pretty sure you get the same error without the opimizier
masak one is "is this even possible to do (and is it possible to find out statically?", the other is "let's just do this statically"
moritz constant folding calls the same code as would be called at run time 13:05
the problem is different here, IMHO
masak moritz: what error? there wasn't an error.
that's the bug... :)
moritz erm, same non-error
masak oh, fershure.
I was just reflecting in general about the closeness of the two processes. 13:06
it interests me that they are tangled. it seems to be an essential neg-separation.
r: my Int @a; @a = <foo bar>; say @a 13:07
camelia rakudo f8e970: OUTPUT«foo bar␤»
masak r: my Int @a; @a = Nil; @a.push: $_ for <foo bar>; say @a
camelia rakudo f8e970: OUTPUT«foo bar␤»
moritz masak: the real problem here is that typed arrays don't replace some low-level store operation that all high-level writing operations use 13:08
13:08 PacoAir joined
moritz masak: but instead it aims to re-implement all high-level writing operations, and several of them were forgotton, it seems 13:08
lizmat r: my @a = <foo bar baz>; my Int @b= @a; say @b # more forgetfulness
camelia rakudo f8e970: OUTPUT«foo bar baz␤»
lizmat r: my Int $a="foo"
camelia rakudo f8e970: OUTPUT«Type check failed in assignment to '$a'; expected 'Int' but got 'Str'␤ in block at /tmp/I_tdNQav7C:1␤␤»
lizmat *phew* 13:09
masak moritz: from my viewpoint as an architect, it feels like we've neglected to put in an "invariant check" early on, and now it's coming back to bite us repeatedly.
"or right, we totally forgot about that code path, too!"
oh* 13:10
13:17 SamuraiJack left 13:18 pnu joined, zamolxes joined 13:19 colomon left 13:20 ribasushi joined
dalek kudo/nom: 72b1b02 | (Elizabeth Mattijsen)++ | src/core/List.pm:
Add type checks for List.push and List.unshift

These should probably be done at a lower level, but for now we're at least according to spec.
13:32
matthias__ hi, I am curious if something like «{ my $OUTER::x = 2 }; say $x» is going to work? 13:36
moritz masak: a huge problem is that lists and arrays really, really need to be fast, so we don't want another layer of indirection anywhere
matthias__: no, you won't be able to declare variables for an outer scope. That's a feature.
matthias__ ok thank you moritz
diakopter moritz: well, it could be argued that they're going to be really slow no matter what until an awesome optimizer appears 13:37
yoleaux 08:36Z <FROGGS> diakopter: can you fix it please? I'm not so sure what to do: irclog.perlgeek.de/moarvm/2013-07-28#i_7378950 and irclog.perlgeek.de/moarvm/2013-07-28#i_7378959
08:58Z <FROGGS> diakopter: nvm, everything is good :o)
diakopter FROGGS: fix it yourself!
FROGGS: oh wait, you did.. ;)(
;)
FROGGS hehe
well, yes and no
brb
diakopter I really should merge these two branches just to get the makefile fixes, once they work on gmake too 13:38
before they diverge even more 13:39
13:39 btyler joined
moritz diakopter: that's not a good argument for making them even slower right now 13:39
dalek ast: 03df203 | (Elizabeth Mattijsen)++ | S (4 files):
Unfudge now passing TODO tests, because of type checks on .push and .unshift
13:40 shinobicl joined
lizmat FWIW, for Mu arrays, there is only 1 extra check compared to before 13:40
self.of =:= Mu
diakopter moritz: I know; I'm mostly teasing. mostly.
moritz: irclog.perlgeek.de/moarvm/2013-07-29 has a link at the bottom to the next day 13:42
timotimo r: my @a; say @a.of;
camelia rakudo 923fe3: OUTPUT«(Mu)␤»
timotimo oh, that's interesting, i suspected they would be of Any by default 13:43
13:43 dayangkun joined
moritz most (all?) built-in container types default to Mu 13:44
mostly because there's no good explanation of what happens when assignment autothreads 13:45
13:46 sqirrel joined
timotimo that's fair. 13:46
hm; in theory the optimizer could complain at compile-time when arrays of non-matching types are somehow mingled 13:47
13:47 dayangkun left
lizmat r: my Int @a; my Str @b=@a 13:47
camelia rakudo 923fe3: ( no output ) 13:48
lizmat I guess that could be caught at compile time
timotimo i'm a bit unhappy about having the type checks inside these operations like shift/push/assign, because if they were somehow separate and visible to the optimizer, the optimizer could just say "this operation is wrapped in a typecheck-op, in this case it seems like i can do the typecheck-op at compile-time!" and leave the rest be
moritz technically that's valid for empty arrays
timotimo this way it'd need to either inline all those methods or know about each one, i guess?
lizmat timotimo: I agree with you, and I'll be the first to rip out that code when we have another solution 13:49
timotimo i wish i had a good solution, though
lizmat the solution lies in the guts at C-level, most likely
where things like Nil assigments will need to be checked as well
timotimo i don't like hearing that
arnsholt diakopter: If you need someone to test and debug with gmake I can pitch in
timotimo hey, how's about the typed arrays get their arguments for push etc typeconstrained? is that doable with the roles we have? 13:50
diakopter I thought that type check array assignment bug was already in rt
13:51 skids joined
lizmat r: my Int $a="foo" # checked in rakudo_scalar_store in src/vm/parrot/guts/container.c 13:51
camelia rakudo 923fe3: OUTPUT«Type check failed in assignment to '$a'; expected 'Int' but got 'Str'␤ in block at /tmp/90MxMuKhYX:1␤␤» 13:52
timotimo that's the easiest case; that can very well be done by the optimizer at compile-time.
actually, maybe that's already the case?
r: say "alive"; my Int $a = "foo";
camelia rakudo 923fe3: OUTPUT«alive␤Type check failed in assignment to '$a'; expected 'Int' but got 'Str'␤ in block at /tmp/LC_VeIi071:1␤␤»
timotimo nope, sadly not
JimmyZ lizmat: re 72b1b028a4, runtime check is not about right :) 13:54
lizmat JimmyZ: seems to work, but I'm easily corrected :-) 13:55
timotimo hm. if the optimizer learns to do the type checking for assignments and push etc, it'd still need a way to do a non-runtime-checked assignment/push/...
lizmat indeed, runtime will always be needed
especially if coming from an Any container assigning to a typed container 13:56
JimmyZ I would rather not do check if it only slow things and throw exception in runtime
timotimo of course; what i mean is: if i have an Int array and an Int array and i unshift + push from one to the other or something like that ... the optimizer can recognize that it's safe, but it has no way to push into the other array without executing *another* check at runtime 13:57
shift+push is what i meant to write.
lizmat indeed
JimmyZ it doesn't make things better, but worse
13:58 BenGoldberg joined
lizmat JimmyZ: why? if you don't want typed containers, and the associated tests, don't use them :-) 13:58
let me check if I can MMD to the work 13:59
moritz well
yes, MMD is what I wanted to mention
PerlJam wonders if Perl 6 will grow a type inferencer like Haskell has 14:00
moritz maybe, maybe we can give Array[Int].shift a signature with return type Int
and an Array[Int].push candidate that accepts a single Int
lizmat moritz: I was working on that, but turned out to be more complex than I thought 14:01
timotimo moritz: i would love that; can it be done just with roles and type captures?
PerlJam: obviously type-infering everything will be hard unless we sprinkle the core setting with many, many more type annotations 14:02
currently there are very, very few
or maybe you mean that those would be type-infered automatically if possible?
14:03 bluescreen10 joined
[Coke] r: for 1..10 -> { constant ha := $_ ; say ha } 14:04
camelia rakudo 923fe3: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in block at /tmp/VASTQKo5lA:1␤␤»
14:04 logie joined
skids
.oO(.push(more,than,one,thing,in,lazy,list) is bothersome -- how you MMD on that without breaking laziness to find the types.)
14:04
[Coke] r: for 1..10 -> $a { constant ha := $ ; say ha } 14:05
camelia rakudo 923fe3: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name␤at /tmp/wnEroWoVGZ:1␤------> for 1..10 -> $a { constant ha := ⏏$ ; say ha }␤ expecting any of:␤ colon pair␤ prefix or term␤ prefix or meta-prefix␤»…
[Coke] r: for 1..10 -> $a { constant ha := $a ; say ha }
camelia rakudo 923fe3: OUTPUT«(Mu)␤(Mu)␤(Mu)␤(Mu)␤(Mu)␤(Mu)␤(Mu)␤(Mu)␤(Mu)␤(Mu)␤»
moritz timotimo: I have no idea
14:05 xilo joined
lizmat see TimToady's comments earlier today 14:05
timotimo skids: that'll require runtime checks apart from the MMD i fear :(
moritz r: role R[T] { multi method x(T $x ) returns T { $x * 2 } }; say R[Int].x(42) 14:06
camelia rakudo 923fe3: OUTPUT«===SORRY!===␤Invalid typename 'T' in parameter declaration.␤at /tmp/Ek_Cg1DFUz:1␤------> role R[T⏏] { multi method x(T $x ) returns T { $x␤»
moritz r: role R[::T] { multi method x(T $x ) returns T { $x * 2 } }; say R[Int].x(42)
camelia rakudo 923fe3: OUTPUT«Cannot type check against type variable T␤ in any type_check at src/gen/Metamodel.nqp:305␤ in method x at /tmp/QJv1xfUiIQ:1␤ in method x at src/gen/CORE.setting:510␤ in any at src/gen/Metamodel.nqp:1461␤ in block at /tmp/QJv1xfUiIQ:1␤␤»
moritz timotimo: seems you can't, with current roles implementation
lizmat moritz: this should be a right signature, no: multi method push(List:D: *@values where .of =:= Mu) { 14:07
moritz lizmat: that's not what I meant
lizmat: I meant a candidate multi method push(List:D: Int $just_one_value) is default { } 14:08
lizmat: which needs to be generated at specialization type
lizmat: the problem is that @values.of is always Mu
lizmat ah, but I meant it to work on self
14:08 ecocode`` left
moritz but the .of is called on @values 14:09
lizmat so how do I specify the check to be performed on the object ?
skids timotimo: unless push was specced to have the same effect as a recursive MMD on each argument, even if not implemented that way internally.
moritz maybe the real answer is to give the optimizer more meta data 14:11
timotimo moritz: "with current roles implementation" seems good. that means it's possible to do in spec ;) 14:14
moritz no
just because it's impossible with current implementation doesn't mean it's possible by spec
timotimo aaw 14:15
moritz in fact I'm not sure what exactly the spec says on this issue, if anything at all
timotimo +perhaps, then
moritz perhaps, yes
timotimo sounds like a candidate for a spec ticket
moritz sounds a candidate for reading up on the specs
and if it's unclear, maybe a spec ticket 14:16
because I don't have perfect by-heart knowledge of the specs, sad as it is :-)
skids moritz++ I was biting my tongue trying not to say "maybe we should do <already specced thing> instead of what's in the spec". 14:17
timotimo skids: i'm not sure i understand you, but it seems like you're conflating .push and .plan?
masak 'management: "get your ducks in a row". chaordic management: self-organizing ducks" -- speakerdeck.com/lauraxt/minimum-vi...ureaucracy 14:19
s/" /' / 14:20
seems apt for #perl6.
lizmat ducks
and goes of to look at something else 14:21
off
skids timotimo: not conflating just saying maybe Array[Type].push should proceed to push until a typecheck fails, instead of plumbing the entire arglist before trying to push.
14:22 benabik joined
skids Effectively working as though it were implemented as push(blah,...) { push(blah), push(...) } 14:23
timotimo ah. interesting point indeed
because a type check exception can be caught and you'd want to know if the stuff before that would have been pushed before or not. 14:24
lizmat skids, timotimo: but that's what the current implementation does ?
[Coke] "Don't commit to estimates for unknown tasks. Just say no." (from that deck. ++)
timotimo lizmat: in that case, a clarification in the spec may be appropriate
skids lizmat: yay! :-)
masak I really like the sound of the last slide: "mastery, autonomy, purpose". those are three words I value. 14:25
lizmat map has always been very powerful, albeit lazy 14:26
14:31 crab2313 left 14:34 crab2313 joined, arcterus joined 14:35 colomon joined
masak :) 14:36
jercos (:
14:37 matthias__ left, Psyche^_ joined
moritz turns his head the other way to follow the smiley 14:38
jercos
masak ☄! 14:40
14:40 arcterus left
masak sheesh, we still don't have the Snowman::Comet module yet... 14:40
14:40 telex joined
masak hurry up and future already! 14:40
jercos use Acme::TimeTravel 14:41
14:41 Psyche^ left
timotimo i ... don't even ... 14:43
what would that even do?
the snowman::comet module i mean 14:44
masak timotimo: you must be new here. :D 14:47
14:47 yangyong joined
masak sorry, I don't mean to be snide, but that's part of our cultural heritage, and you simply must know it :P 14:47
hold on, let me get the RT ticket for ya. 14:48
Ulti 💩
masak rt.perl.org/rt3/Ticket/Display.html?id=66498
Ulti: your client doesn't seem to utf8 properly.
Ulti orly I can see it :/
timotimo :) 14:49
masak timotimo: first use was prolly here: irclog.perlgeek.de/perl6/2009-06-10#i_1229012
timotimo: short story: the bug got fixed, but *of course* now there's no way we *can't* implement snowman-comet quoting as a (language-altering) module. 14:50
should be pretty trivial, once we have slangs.
timotimo haha, i've seen that test some time ago i think
but i never knew it had any cultural 'weight' to it :)
[Coke] google searching the logs for ☃ gives several false positives, it seems. (even with intext:☃) 14:52
masak you can't stop people from making snowmen. 14:53
14:53 kaare_ joined, pupoque_ joined
lizmat I Am The Sun :-) 14:54
masak 14:55
14:56 pmurias joined 14:57 Pleiades` joined
masak I'd love to see someone blog how the Perl 5 and Perl 6 communities view the bullet points in www.python.org/dev/peps/pep-0020/ 14:58
14:59 yangyong left
masak for example, "In the face of ambiguity, refuse the temptation to guess." seems to be a very anti-DWIM stance. 14:59
as such, Perl 5 should take a rather contrary position, and Perl 6 perhaps a less contrary one, but still not full agreement. 15:00
just as an example.
also, that list is from 2004 -- I wonder if the modern Python community is distancing itself from one or more of those?
flussence "practicality beats purity" maybe... they're still struggling with the py2 to 3 transition even though it's meant to be a straight upgrade. 15:02
masak well, let's not be mean about that upgrade. our challenge is greater.
it shouldn't fill us with glee that others are facing similar hurdles. 15:03
lizmat mumbles something about our own strength and not taking issue with what other people think
masak I think in many ways, it is a straight upgrade. the problem is the ecosystem, which is largely py2.
15:04 bluescreen10 left
masak ecosystem matters. it may block the path to worthwhile upgrades/transitions. in a way, it's a "problem of success". 15:05
nwc10 Yes. I think that that's a key part of it
and I see nothing nice about being unpleasant or unhelpful about that upgrade 15:06
but I suspect that there are things to learn from it, and problems to avoid repeating 15:07
arnsholt masak: I think the most important point of disagreement between Perl and Python (in terms of your link) is on "there should be only one obvious way"
dalek kudo/nom: 5628e68 | (Elizabeth Mattijsen)++ | src/core/Hash.pm:
Reimplement Hash.classify/categorize using nqp primitives

This makes for about a 40% reduction in CPU
flussence those bullet points seem to have worked either way, the GNOME world pretty much runs on python everywhere.
masak arnsholt: aye -- that is *the* difference, if you ask me.
arnsholt: it's a kind of mental monoculture versus mental liberalism. 15:08
timotimo 40%! \o/
lizmat .tell colomon I've reimplement classify/categorize and wonder how your code would be faring with these versions
yoleaux lizmat: I'll pass your message to colomon.
arnsholt Yeah. There are differences on the others as well, but there it's mostly over what qualifies as what
masak arnsholt: though of course no Pythonista would ever put it that way :P
Ulti arnsholt: I dunno I think thats a good tennant for Perl too, the obvious way doesnt need to be the only way though
having one obvious good practice style of doing something is a strength
15:09 bluescreen10 joined
colomon lizmat: noted 15:09
yoleaux 15:08Z <lizmat> colomon: I've reimplement classify/categorize and wonder how your code would be faring with these versions
arnsholt masak: Different ideals, yeah =) 15:10
colomon just noticed the ABC module has been failing tests for nearly a week. way to overlook the mote in your own eye, dude. 15:12
lizmat ABC ?
colomon abcnotation.com/ github.com/colomon/ABC 15:14
lizmat ooooo wow… dus MusicMatic ring a bell with you? 15:15
MusiMatic rather
timotimo arnsholt: have you been able to look into the failures in zavolaj that coke has found with his daily star runs? 15:16
colomon lizmat: sorry, no?
lizmat www.43things.com/entries/view/1232086 references it 15:17
"The Symphony of Psalms is fabulous too. I’ll never forget a friend of mine carefully encoding it into “MusiMatic” – a music playing program on PLATO when I was in college (billions of years ago). It totally worked."
PLATO also had locking super/subscript
you could use this to indicate to an octave higher / lower 15:18
You entered music with MusiMatic as text, and it would play it, with max 4 voices if I remember correctly
this was the late 70s :-) 15:19
colomon lizmat: cool!
daxim_ plato also had <enwp.org/Avatar_(PLATO_system_video_game)>, an influential game
arnsholt timotimo: Some traits that are no longer valid, apparently. Should be pretty straightforward to fix I think 15:20
lizmat empire on PLATO was multiplayer StarTrek universe
daxim_ its spiritual descendants are mordor for windows 3, and demise for win9x
colomon I think I started messing around with computer music in 1982 or so.
lizmat arnsholt: yes, I removed a few in the past days
all according to spec, I might add :-)
arnsholt Well, that's what happens when you remove them from the spec, isn't it? =p 15:21
colomon One of the very first programs I wrote was a music program, actually. Cobbled together with not particularly compatible hints at how to do it from different programming magazines.
lizmat :-)
colomon lizmat: anyway, I actually use the p6 ABC module for sheet music pretty regularly, so having it broken is a Big Deal as far as I am concerned. 15:23
lizmat daxim: ah, the memories: Moria! around the same time I was working on yet another Moria successor called Angmar :-)
colomon: I hope the breakage is easy to fix
colomon lizmat: me too!
[Coke] opens tickets for the 3 failing star modules. 15:24
daxim_ you'll like my lightning talk act.yapc.eu/ye2013/talk/4952
lizmat indeed!
masak Ulti: psst! "tennant" is the 10th Doctor. if you mean "underpinning principle", "tenet" is what you want. :)
daxim_ Telo, sisne, tenet? Non tenet ensis, olet. 15:26
15:28 kaleem left
[Coke] opens issues for the 3 modules included in * with no tests. 15:28
huf google translate bleeds to death on that
daxim_: what does it mean?
daxim_ set input lang to latin 15:29
huf i got _that_ far :)
lizmat it means the same backwards, that's for sure :-) 15:30
[Coke] tadzik: pod-to-html is one with no tests.
15:35 daxim_ left
masak the Web seems to suggest it's the last line of a "Sotadic Elegiac poem". 15:38
of which every line, it looks like, is a palindrome.
it's in here: www.gutenberg.org/files/42792/42792...2792-h.htm 15:39
that's as far as I get right now.
15:39 birdwindupbird left 16:01 DarthGandalf joined 16:04 arcterus joined
TimToady re: my $x (42); this is parsing as a subsignature, so it doesn't catch the TTIAR error 16:07
it's not clear to me before coffee whether anything can be done about that...
might not be clear after either :)
rn: my $x (1+2); 16:09
camelia rakudo 5628e6: OUTPUT«===SORRY!===␤Unable to parse expression in constraint; couldn't find final ')'␤at /tmp/qWKPnStLbw:1␤------> my $x (1⏏+2);␤ expecting any of:␤ scoped declarator␤ constraint␤»
..niecza v24-88-g1f87209: OUTPUT«===SORRY!===␤␤Unable to parse constraint at /tmp/cQpiXKCqcb line 1:␤------> my $x (⏏1+2);␤Couldn't find final ')'; gave up at /tmp/cQpiXKCqcb line 1:␤------> my $x (1⏏+2);␤␤Parse failed␤␤»…
TimToady at least some things are illegal in a sig
masak surely a thing like '(42)' in that position could simply be disallowed?
even if that counted as an "exception", I mean.
lizmat r: my $a is default (42) # specifically for these typos 16:10
camelia rakudo 5628e6: ( no output )
Ulti masak: heh thanks
TimToady dunno if a subsig ought to apply to a subsequent bind; arguably it should apply to a $x ::= $stuff
lizmat r: my $a is default (42); say $a
camelia rakudo 5628e6: OUTPUT«True␤»
16:10 rindolf left
moritz compare: sub ($x (:$a, :$b)) { } 16:10
TimToady we could usefully disallow constants on non multi sigs, I suppose 16:11
Ulti masak: all things are reducible to David Tennant Dr Who quotes is a tenet of Perl too though right?
TimToady we have a big tenet tent 16:13
r: my $x (42); $x ::= 43; say $x; # arguably should fail
camelia rakudo 5628e6: OUTPUT«43␤»
TimToady since the corresponding parameter binding would fail 16:14
masak Ulti: :) 16:15
Ulti I am really bad for that kind of word confusion :S the most embarrassing to date was confusing affluence and effluence 16:17
TimToady :D
Ulti protip for Perl6 design ^ dont have efflience operators
*effluence
'effluence control' would be a great bit of word salad for programming 16:18
TimToady you can't control effluence, it just happens :) 16:19
there is no guarantee of affluence, however, sigh...
Ulti you do need to manage both though 16:20
TimToady will settle for a little influence now and then
colomon is wondering how one debugs C++ when the debugger gets completely lost...
Ulti I imagine aff and eff word starts are the most commonly confused in English though, affect/effect
too many accents have aff and eff sounding the same 16:21
16:22 rindolf joined
TimToady tries to feel effection for everyone... 16:23
lizmat feels very effective now 16:25
or is it effectivated?
TimToady depends on which affect you are trying to effect 16:26
dalek kudo/nom: 9dd34f3 | (Elizabeth Mattijsen)++ | src/core/Hash.pm:
Allow multi-level classifications, as per spec
lizmat cycling + dinner& 16:28
16:28 orafu left 16:29 FROGGS[mobile] joined 16:32 crab2313 left 16:33 FROGGS left
moritz colomon: strategically placed cout << statements 16:38
colomon moritz: that's what I'm afraid of 16:39
moritz: not sure they're paying me enough for this 16:40
16:42 spider-mario joined
colomon "lemma-encrusted shoulders of giants" www.scottaaronson.com/blog/?p=304 16:45
16:46 arcterus left 16:48 FROGGS joined, FROGGS[mobile] left
TimToady suspects the solution to the typed lazy slurpy problem involves being a little bit smarter about static typing of parcel tails 16:48
such that if you have a typed slurpy, it must be provable at bind time that the tail of the parcel is compatible
and the act of putting a type on a slurpy requires the caller to supply that compatibility, either statically via known/inferred types, or by putting a coercer that is known to produce the correct type of list 16:49
moritz the other alternative is a typecheck-as-you-reify approach 16:50
TimToady a guaranteed-slow approach
moritz (rather than coerce-as-you-reify)
TimToady coerce as you reifiy would be a declaration like Int() *@slurpy 16:51
but the important observation is that the static type system can infer things about the tail of a parcel, I think
if you have a parcel (1.1, 2.2, 3, 4, 5), and you bind it to ($a, $b, Int *@c), then the compiler should be able to know that starting at the 3rd argument, the parcel is compatible with Int 16:52
likewise my Int @ints; (1.1, 2.2, @ints) 16:53
and I'm sayin' we could bend the language in the direction of requiring the caller to take more type responsibility in binding to such a signature 16:54
how much more depends on how much tail inferencing we do
moritz is always scared when TimToady muses about what static analysis should be able to recognize
TimToady well, gradual typing sits somewhere between static and dynamic, but we're still rather prejudiced toward the dynamic end 16:55
the static typers would think we are still way out on the dynamic end
certainly in Haskell, you'd know the type of the things in your lazy list very accurately
arnsholt If nothing else, relying/allowing on static analysis here means different compilers most likely will differ in what code they accept and don't, since they won't have the exact same inference capabilities 16:56
TimToady is just wondering how far we can move that direction (in the case of a typed slurpy) without turning into a brain-pretzel language like Haskell
diakopter is it better to be effable or affable?
TimToady diakopter: I'll have a little of each, please :) 16:57
diakopter remind me which one is the influenza operator
16:57 pecastro joined
TimToady arnsholt: mostly the differences would show up as what could be detected at compile time vs run time 16:58
16:58 abnorman joined
arnsholt timotimo: Correction. The bug seems to be more complicated than I thought. Are you blocking on it ATM? 16:58
16:58 abnorman left 16:59 abnorman joined
TimToady but it seems completely obvious to me that the only way to have efficient typed laziness is through static knowledge of the types 17:00
arnsholt jnthn: Could you have a quick look at the recent Zavolaj-fail? I suspect it's due to something changing within Str in Rakudo, which means that I can't mix into a Str with does anymore 17:01
TimToady and that we should not preclude using this knowledge when it is available
17:01 bluescreen10 left
diakopter arnsholt: jnthn's out for a week 17:02
arnsholt Oh. Right.
TimToady the other thing that is obvious to me is that when we have to check at runtime, we should only do it once
requiring the caller to install a statically typed coercer in some cases is not too onerous, I think, if it prevents the binder from having to do duplicate type checks 17:03
s/prevents/relieves/ maybe 17:04
and for any such calls known at compile time to be compatible, the type checking can be thrown away entirely 17:06
which would apply to lexical functions, as well as an finalizable methods
and for non-finalizable methods, it comes down to a single run-time check for the tail of the parcel at the current binding position, and fail if the tail is not known to be compatible 17:07
then there's never any need to typecheck an entire list from the standpoint of the binder 17:08
the binder may, however, require the caller to find some way of asserting the correct type, either through an explicit coercer/checker, or via additional type annotations on the incoming data 17:09
(or via inferencing, to the extent we do it)
this feels like a better balance point on the gradual typing spectrum than just assuming that slurpies have to be dynamically checked always 17:10
17:10 dakkar left
TimToady doubtless there will also be some kind of I-know-what-I'm-doing cast that asserts a type without "proving" it 17:11
arnsholt Are there any non-jnthn Rakudo-core hackers who might be able to shed light on the Zavolaj failure? 17:13
TimToady I guess another way of saying it is that type checking the tail of a small parcel is much easier than type checking the tail of the list that might be produced by the parcel
arnsholt It complains that "Cannot create rw-accessors for natively typed attribute '$!cstr'", but by all rights that thing shouldn't be natively typed (I think) 17:14
[Coke] arnsholt: is there a issue opened on zavolaj? 17:15
17:15 colomon left
[Coke] is it the same as github.com/jnthn/zavolaj/issues/28 ? 17:15
arnsholt Yeah, that's the one 17:16
[Coke] I can take a poke after $dayjob, but don't expect much from me. :)
arnsholt Any help I can get =) 17:17
Hmm. Apparently the is rw trait is dead 17:18
Wonder what happens if I just remove that...
Nope. 17:19
17:19 SamuraiJack joined
masak TimToady: an I-know-what-I'm-doing cast would also be useful for people who have a (non-Int-typed) array full of Ints, and want to pass it to a routine with a signature with 'Int @x'. 17:19
arnsholt lizmat: Since you're the one who removed this thing, what's the spec-licenced way to mark an attribute as rw? They're ro by default, no? 17:20
masak str: constant I-know-what-I'm-doing = "not really"; # :)
std: constant I-know-what-I'm-doing = "not really"; # :)
camelia std c2215f0: OUTPUT«ok 00:00 42m␤»
masak the fact that I typo'd that one would be a case of... Muphry's law, I guess.
moritz wait what, rw on attributes is gone? 17:22
I thought it was only gone on variables 17:23
17:23 bluescreen10 joined
moritz r: class A { has $.x is rw }; given A.new { .x = 42; say .x } 17:23
camelia rakudo 9dd34f: OUTPUT«42␤»
17:24 konundra joined
arnsholt Ah, I misread the commit message then 17:26
lizmat: Never mind. I fail at reading
17:28 colomon joined
TimToady Muphry's Law++ 17:31
moritz github.com/mwilliamson/whack # anybody want to try if whack can build a relocatable parrot?
17:32 cognominal left
TimToady strongly expects difficulties in mixing in anything read-writey to an immutable value type 17:32
arnsholt moritz: You happen to know of any changes to natives/attributes lately?
diakopter watching #p5p is scary 17:33
arnsholt TimToady: The thought did occur to me =)
But it's been working for a long time
masak diakopter: I thought that was a long-established fact. :)
diakopter didn't know
arnsholt (Although that particular functionality is on the chopping block, as soon as I get the tuits to refactor stuff)
masak diakopter: or maybe s/#p5p/all but a handful of IRC channels/ 17:34
moritz arnsholt: no, but I don't follow the low-level stuff closely these days :/
diakopter masak: that's true. 17:35
moritz
.oO( There are two types of IRC channels: Scary ones, and those that nobody uses )
TimToady certainly the p5p mailing list has been scary from time to time for about twenty years now...
so it would not be surprising if #p5p tracked the mailing list in that regard
masak the p5p mailing list was explicitly one of the cultural bits the Perl 6 rewrite set out to improve upon. 17:36
masak .oO( "and look, here we are", he stated humbly ) :P
TimToady well, there are always scaling issues for any community, so let's not kid ourselves too much 17:37
we have a good start, but that's about all it is
timotimo arnsholt: i'm not blocking on the bug, no
17:37 DarthGandalf left
nwc10 I might need a fanantical loyalty to the pope 17:38
TimToady Eternal troll hugging is the price of letting people across the bridge.
nwc10 but tensions on the p5p list seem to be caused by
1) desire for backwards compatibility to keep working code working, versus awesome* new features
* in the eye of the proposer
masak TimToady: troll hugging will be the first casualty of scaling.
17:39 DarthGandalf joined
nwc10 2) many people who talk but don't actually contribute** 17:39
PerlJam nwc10: itym ego, ego, oh, and ego
TimToady masak: unless we can define it recursively somehow
nwc10 ** or contribute anything else
arnsholt timotimo: Well, that's good at least
moritz nwc10: 2) is actually common in here too
masak TimToady: delegating troll hugging. yes, sure.
nwc10 PerlJam: no I *don't*. Once you take the egos out, those two problems remain
masak TimToady: hugging leutenants! :)
nwc10 (1) is probably mostly solved by the ability to redefine things lexically
masak TimToady: but as it grows, it'll also get cracks where non-hugging gets in and festers. 17:40
diakopter nwc10: oh I didn't mean the list
just the irc channel
PerlJam nwc10: okay, I'll agree with that. But you still have to get past the egos :)
masak TimToady: basically, the complex system will get parasites in the Doctorow sense. and the parasites won't want to hug.
TimToady masak: another thing that helps is ways to split single rooms into multiple rooms with more focused concerns and more localized trolling
17:40 FROGGS left
masak aye. 17:40
we've had surprisingly little trolling on #masakism. 17:41
17:41 FROGGS joined
masak someone came in and said they'd been sent there by some Python people -- that's basically it. :) 17:41
PerlJam
.oO( somewhere a troll is thinking .oO( challenge accepted ) )
TimToady really, the only way to ever have an effective large organization is to really have an organization of small organizations
nwc10 the problem of (2) might be partly reduced by being (far far more) self-hosting 17:42
but compilers are still complex beasts to think about, even if the implementation language is familar and powerful
TimToady well, Apple solves (2) by giving you nothing to say, and nowhere to say it. :)
masak TimToady: ...which works fine as long as it's not essential that the small organizations interoperate somehow.
17:43 sqirrel left
TimToady masak: depends greatly on whether the interaction is via messaging or via shared storage :) 17:43
masak haha 17:44
diakopter nwc10: I just meant the topics discussed are weighty and seem momentous
not anyh other kind of scary; I've been in there less than a dayh
TimToady but really, it is the same problem in disguise, multithreading vs resource contention
masak TimToady: even if it's via messaging, it may lead to problems. say if the objective is building a monolithic thing, like a compiler.
moritz idly wonders if diakopter's "h"s are silent 17:45
17:45 rindolf left
masak TimToady: possible problems are responsibility shirking ("the people on the other side of the interface boundary will fix this, surely!") and the opposite, duplicated work. 17:45
TimToady as always, the main problem is to distinguish the actual domain problems from the problems induced by your configuration 17:47
masak TimToady: though I believe seeding is really important. cf "Matz is nice so we are nice"
17:47 sqirrel joined
TimToady sure, works for me :) 17:48
masak seeding is probably the biggest identified action one can take in advance of the scaling problems.
TimToady except when it doesn't...
diakopter perl is undead so we are undead 17:49
masak .oO( welcome to TimToady's own little "Rakudo-on-Earth"... ) :P
[Coke] masak: haven't we historically done a horrible job of managing those interface boundaries, even when we knew they were there and probably not working? 17:50
PerlJam wonder about the non-earth presence of rakudos
masak PerlJam: all the more reason, then. :)
[Coke]: I don't know what you're thinking of when you say that, but my thoughts immediately go to Rakudo<->Parrot. 17:51
[Coke]: in which case, yeah, kinda. despite the best of intentions, kinda.
TimToady not even Jesus was able to build a happy little utopia of smiling robots, but he did manage to seed something relatively enduring, one is forced to admit 17:52
[Coke] masak: that's what I was thinking of, aye.
diakopter variegating if not enduring 17:53
dalek rl6-roast-data: f1145f1 | coke++ | / (5 files):
today (automated commit)
timotimo is there already someone who's providing RPMs of rakudo star releases for fedora? 17:55
17:59 benabik left
diakopter what's the p5 evalbot? 18:00
[Coke] has trouble understanding why someone would do that.
p5eval: print "WOT?" #?
diakopter eval: ; 18:01
eval ;
18:01 benabik joined
diakopter p5: ; 18:01
perl: ;
timotimo [Coke]: that == RPMs for fedora?
18:02 FieldsaBB joined
spider-mario I do that for arch so it’s not impossible that someone does it for fedora. 18:04
[Coke] RPMs of star, specifically. 18:08
18:18 zby_home_ joined
dalek ecs: 98267bb | larry++ | S04-control.pod:
the 'will' form excludes CATCH and CONTROL
18:21
18:22 FieldsaBB left 18:23 FieldsaBB joined
TimToady moritz: is there any way for the 'Look for new lines' button to ungrab the focus after you click it? I like to page forward with spacebar, and if the focus stays on the button, all it does is repush the button 18:25
or maybe there's some way to trap an attempt to page beyond the end and look for more without an explicit button? 18:28
timotimo many websites do that automatic reloading while scrolling 18:34
FROGGS you could have a checkbox, which does a auto-reload when checked
benabik if ( scrolling_past_bottom() && now() - last_load > threshold ) load_more_lines() 18:42
TimToady realizes he's violating the maxim: "Do not look a gift horse in the mouth." :)
colomon gift horses++ 18:43
masak .oO( do not page a gift horse in the spacebar ) 18:50
colomon giant wooden gift horses--
geekosaur they're a bit troying 18:51
moritz feature requests are fine, as long as they come in the form of suggestions and demands
arnsholt Beware Geeks bearing gifts?
moritz and of course TimToady++ has been kind enough to do it that way
masak "oh look, the enemy sent us this huge, possibly hollow gift! let's put it in the yard and go to sleep, unsuspecting." 18:52
moritz masak: in restrospect, all great ideas are simple :-)
and most attacks work far better if you've never been warned about them 18:53
masak moritz: yes, that's a possible counter.
but it seems to me that even *before* retrospect, the Troyans were carrying the Idiot Ball.
moritz is the Troyan horse actually a historically established fact? (or "just" legend/prose" 18:54
masak when is it *ever* a good idea to accept gifts from your siegers?
moritz )
masak moritz: good question. probably the latter.
moritz: but even works of fiction can be analyzed for idiocy.
s/probably/almost certainly/ 18:55
colomon I'm not sure there's any generally accepted hard evidence for the siege of troy ever happening... 18:58
en.wikipedia.org/wiki/Trojan_War#Hi...ical_basis 18:59
moritz TimToady: the button now loses focus after the reload happened (you might need to reload with Ctrl+shift+R to actually get the updated JS)
colomon moritz++ 19:00
19:01 FieldsaBB left
TimToady \o/ 19:03
moritz TimToady: I don't know if that acutally allows you to forward-page with space bar though 19:04
I just unfocus the button -- no idea where the focus goes :-)
seems to work in firefox though
TimToady yes, works for me, moritz++ 19:05
moritz loves jquery for progressive enhancement thingies
masak .oO( did we just make TimToady more unfocused? ) :P
moritz it seems to have the simplest API that could possibly work, and it works really well
FROGGS moritz: works on my box (firefox too) 19:06
moritz github.com/moritz/ilbot/commit/cda...b1e29bce12 # that's the patch :-)
masak moritz: after spending over a year with JavaScript and jQuery, I feel that jQuery is what the DOM API should have been if time machines etc.
.blur()++ 19:07
19:07 benabik left
moritz is all for progressively enhancing time machines 19:07
as a means to conquer technical debt :-)
masak also, jQuery is decidedly JavaScript-aware in its design.
19:07 benabik joined
masak the DOM API just makes well-intentioned but ultimately committee-bumbling and useless motions toward a language-independent ideal of "object orientation". 19:08
moritz on a mostly unrelated note, a few small js-based UI improvements to our internally (and heavily used) ticket system have received overwhelmingly positive reactions, whereas most changes receive no feedback at all 19:16
FROGGS that is why I spend so much time for UIs, and for most projects I do the UI design first 19:17
moritz (the other feature that some people got really excited about was initiating phone calls from the command line. We have a kind of CRM on the command line, and when you're in the context of a person, you can type 'call', and your phone intiates a connection 19:19
19:20 SamuraiJack left
FROGGS ohh nice 19:20
moritz most of my software-hacking was pretty isolated from non-computer hardware, so it was kinda scary for me at first to have the phone ring as soon as you type something in that program)
FROGGS moritz: what telephone system model do you have there? 19:21
masak moritz: when I worked as a webmaster in 2003, I noticed that a web site skin change generated huge acclaim, whereas a much-needed backend long-planned refactor was met by mostly silence. devs and users have different perspectives. :)
FROGGS because our telephone system is an older siemens hipath, and the pc client is winxp+office 2003 specific 19:22
moritz FROGGS: Snom 370 VoIP Phones, connected to a Starface server
FROGGS moritz: ahh, mkay
masak: the first-day-feedback I usually get is: "the old design was better", even when it wasn't (especially when it was not) 19:23
benabik "The old design is better" usually means "I have a pile of habits to avoid the bad parts of the old design" 19:24
moritz FROGGS: not in the price range you were looking for?
FROGGS like we had a hover-menu on a internal website back in 2006, and when you accidentially move the mouse outside the menu, it collapsed at once
benabik And people hate changing habits.
moritz benabik: yes, exactly
FROGGS was a bit like path finding 19:25
benabik: true
moritz FROGGS: we had that too, plus a 2px wide gap. You had to move the mouse fast enough over the gap, otherwise it would collapse the menu :-)
at least I removed the gap.
FROGGS the menu after that was a click menu, so the menu stayed visible as long as you dont click somewhere else 19:26
moritz: hehe >.<
dalek kudo-star-daily: a528ee2 | coke++ | log/ (4 files):
today (automated commit)
moritz my most popular UI fix was to enhance a 100+ entry multi select box with select2 19:28
masak moritz, FROGGS, benabik: did you see bjk5.com/post/44698559168/breaking-...a-dropdown ?
moritz masak: yes. I was tempted to re-implement that, or import an existing implementation :-) 19:30
benabik masak: I was just searching for that. Apple does the same thing on submenus. ISTR a page discussing the difference between typical web, MS, and Apple's submenus.
FROGGS masak: nice!
benabik Maybe it wasn't MS. But there was at least one implementation that did a simple "if you move more horizontal than vertical, leave it open". 19:31
19:31 pecastro left 19:32 _jaldhar joined
masak mhm. 19:32
"within the blue triangle" seems to be a better heuristic than that. 19:33
19:33 mtk left
benabik Especially for large submenus. 19:33
masak yeah.
19:33 Celelibi left
moritz I've just tried it on rawgithub.com/kamens/jQuery-menu-a...ample.html 19:34
it's amazing at how intuitively it works
benabik When I was looking for it, I found (basically) "hover menus considered harmful". Should be renamed to "badly implemented hover menus are harmful" 19:35
masak yeah. 19:36
FROGGS when seeing this UI stuff I must always think of the current SAP client... "click on the binocular if you mean next", and if another form you have to click that little truck-icon to get the same functionality>.<
masak I wonder how often that's the case, of basically blaming a feature or idea for flaws inherent in a bad implementation of it...
[Coke] FROGGS: "the old design was better" == "you moved my cheese"
we get that all the time here.
FROGGS [Coke]: I discipline my peeps, so it gets better and better :o) 19:37
masak ooh, en.wikipedia.org/wiki/Who_Moved_My_Cheese%3F 19:38
19:38 Celelibi joined
masak Celelibi: aloha. 19:38
19:38 prevost joined
[Coke] masak: yes, I'm pretty sure that's the origin. 19:39
benabik Hadn't heard that one before. Love it.
TimToady there's a bit of Hem and Haw in the pre-mug viewpoint that P5's supply of mindshare couldn't possibly be going down, some "surely this will last forever" thinking... 19:41
colomon remembers Jennifer complaining bitterly that the local Methodist preacher thought Who Moved My Cheese was an appropriate topic for a sermon.
lizmat is back 19:42
masak "They Keep Moving The Cheese" -- this is awesome! :)
lizmat arnsholt: the only "is rw" trait I removed, was from Variable, not from Attributes or Parameters or Routine
ah, you saw it already :-) 19:43
masak the "Criticism" section of that article is interesting, too. 19:44
maybe every useful management technique has an equal and opposite misuse :)
TimToady yup
You Can Throw Cheese As A Weapon! 19:45
if you're really good, you can throw the lack of cheese as a weapon...
moritz Anticheese!
colomon should just publish a book called "No One Moved It. I Ate Your Cheese. Could You Please Go Buy More? I'm Hungry"
benabik 1 page: no really, I'm starving, go to the store 19:46
TimToady Learn How To Make Cheese, Duh!
19:46 mtk joined
moritz and a special edition for the US, "The War on Chesse Movers" 19:46
colomon really did finish off a block of cheese just twenty minutes ago
arnsholt lizmat: Yeah, I officially have no idea what's going on =) 19:47
colomon benabik++ 19:48
masak "Sometimes We Move Your Cheese Just To Mess With You." 19:50
colomon "In Soviet Russia, The Cheese Moves You" 19:51
masak 'night, #perl6 19:55
FROGGS Cha' masak! 19:56
19:56 zby_home_ left
dalek kudo/nom: 54c9984 | (Elizabeth Mattijsen)++ | src/core/Variable.pm:
Remove support for "will catch" and "will control", as per recent spec
19:56
moritz good UGT night, masak
19:58 kaare_ left 19:59 ecocode joined
colomon Joking about cheese aside, I am currently lamenting Google replacing the beautifully functional Android Navigation app interface with some slick-looking thing which is an order of magnitude harder to use. 20:03
20:06 sqirrel left
colomon Update: and the app no longer seems to actually work; it just spins its wheels without ever returning a result. 20:11
FROGGS well, I can do that too fwiw 20:13
colomon me too
sometimes feel like I'm making a career out of that, actaully 20:14
huh. now who changed that #define? 20:15
colomon finally got working navigation by firing it up in Google Maps. 20:16
20:22 konundra left, vmspb joined
spider-mario they’ve also made it mandatory to have a G+ account to comment on apps in the Play Store… 20:23
it even prevents me from editting a comment I had already written before the change
:/
moritz require a not-so-anonymous login is not a bad idea in general, because it reduced trolling significantly 20:27
geekosaur afaict they're just unifying everything into a single Google Account 20:29
and I can see the point of that from their side
dalek : 02c6984 | (Tobias Leich)++ | p5:
add "use v5;", since what it is about
20:32
: 37facef | (Tobias Leich)++ | / (4 files):
try to catch up with rakudo

Applied github.com/rakudo/rakudo/commit/11b5dae and started to follow the Buf refactor. Atm we loose 255 passing tests.
20:41 FieldsaBB joined
benabik On the note of LLVM JIT: blog.llvm.org/2013/07/kaleidoscope-...mcjit.html 20:43
20:43 FieldsaBB left 20:49 abnorman left
Tene The "name-shaped names" or "common names" or whatever they're calling it these days is... unfortunate and misguided. 20:49
20:54 abnorman joined, BenGoldberg left 20:55 benabik left 20:59 benabik joined 21:05 benabik left 21:06 skids left 21:09 cognominal joined 21:19 rom1504 left 21:20 masak left, rom1504 joined, [Coke] joined, masak joined
timotimo Tene: what is the "name-shaped names" thing you're talking about? 21:21
oh, google (and probably also apple)
Tene timotimo: G+ 21:22
21:29 spider-mario left, aindilis left 21:30 bruges joined 21:41 Pleiades` left 21:42 PacoAir left
dalek : 782c00b | (Tobias Leich)++ | / (2 files):
fix unpack signatures (utf8 => Blob)

We are still 47 tests behind.
21:43
kudo/nom: 708051d | (Elizabeth Mattijsen)++ | src/ (2 files):
We don't need to expose $*W in Perl6 space, it is already exposed!

Now, it would be great if we could do this with $/ as well. It would allow easy improvement of all compile time errors found in Perl6 space.
21:44
lizmat .tell moritz 50% of the $*W & $/ problem solved 21:45
yoleaux lizmat: I'll pass your message to moritz.
preflex yoleaux: you have 1 new message. '/msg preflex messages' to read it.
[Coke] who owns preflex?
21:46 prevost left 21:48 Pleiades` joined
lizmat gnight #perl6! 21:49
21:49 dmol left
FROGGS gnight lizmat 21:49
21:58 FROGGS left 22:01 FROGGS joined
Tene preflex: preflex 22:01
preflex: owner 22:02
timotimo i couldn't compile nqp.jvm because i had an openjdk 1.7 and jre 1.8 22:06
er, other way around
22:06 rafl left, rafl joined
diakopter timotimo: heh. 22:09
timotimo also, the output of -showversion is incompatible with the ConfigureJVM.pl script. i'll upload a patch soon 22:10
22:21 bluescreen10 left, ecocode left 22:23 FROGGS left 22:30 benabik joined 22:32 abnorman left, abnorman joined, skids joined 22:36 FROGGS joined 22:37 colomon left 22:38 FROGGS left 22:42 pupoque_ left 22:46 colomon joined 22:48 zwut00 joined 22:53 zwut00 left 22:55 gfldex left 22:59 pmurias left 23:11 mstwu00 joined 23:16 btyler left 23:19 btyler joined 23:31 BenGoldberg joined 23:36 BenGoldberg left 23:43 fridim_ joined 23:48 mstwu00 left 23:58 Tene joined, djanatyn joined