Zoffix m: say Perl6::Metamodel::SubsetHOW 02:09
camelia rakudo-moar 18455a: OUTPUT«Could not find symbol '&SubsetHOW'␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
Zoffix m: subset Foo of Str where .chars > 3; say Foo.HOW 02:10
camelia rakudo-moar 18455a: OUTPUT«Perl6::Metamodel::SubsetHOW.new␤»
Zoffix m: Perl6::Metamodel::SubsetHOW.new
camelia rakudo-moar 18455a: OUTPUT«Could not find symbol '&SubsetHOW'␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
Zoffix is that supposed to be like that?
psch m: say Metamodel::SubsetHOW 03:35
camelia rakudo-moar 18455a: OUTPUT«(SubsetHOW)␤»
psch it is a somewhat weird, 'you have to remember it' kind of thing 03:36
so probably LTA
nine ugexe: but list-installed won't work on future rakudos 06:15
ugexe: and resolve landed on Dec 28th 2015 06:16
[TuxCM] This is Rakudo version 2016.07.1-1-g18455a5 built on MoarVM version 2016.07 07:52
test 15.155
test-t 8.040
csv-parser 15.878
lizmat second day at 8.0, cool! :-) 07:55
nine And we're soooo close to seeing a 7 in the front :) 08:02
dalek kudo/nom: 6757a89 | lizmat++ | src/core/List.pm:
Make "my @a is List = 1,2,3" work

In many cases, one wants to have Positional access on a List, rather than an Array, because once initialized, the List cannot change. This syntax, which was supposed to work anyway as similar syntax for
  "my %h is Map = a => 42" also works, has the advantage that it is
cheaper to initialize, as there is no need to create containers for the values (since we do not intend to change it anyway). This saves at least one allocation per reified element, so easier on the GC and more efficient on the CPU as well.
08:15
[TuxCM] Last night I ran a 8.5, but there was also a heavy perl5 smoker running, so I didn't post it 08:22
and I have limited access here from Scotland :)
timotimo i like that commit, liz :) 08:30
dalek p/optimize-with-hoopl: 30e0c94 | (Pawel Murias)++ | docs/ops.markdown:
Document signal constants.
10:49
jnthn [TuxCM]: Hope the whisky is less limited ;) 10:51
m: my \a = List.new; a = 1,2,3; say a 10:52
camelia rakudo-moar 6757a8: OUTPUT«(1 2 3)␤»
jnthn star-m: my \a = List.new; a = 1,2,3; say a
camelia star-m 2016.04: OUTPUT«()␤»
jnthn lizmat: Regression ^^
lizmat jnthn: interesting....
jnthn We can't just fix that by making list assignable.
Or put another way
You can't both have lists hanging around with an empty $!reified indicating "no content" *and* use that as a "can we assign to this" 10:53
lizmat m: my \h = Map.new; h = a => 42; dd h
camelia rakudo-moar 6757a8: OUTPUT«Map.new((:a(42)))␤»
jnthn (I'm good with `my @a is List = ...` working, to be clear. I just don't think we can do it by overloading STORE.)
lizmat same problem, and that exists for a bit longer already 10:54
jnthn That is rather dubious also if it's meant to be immutable :(
lizmat yup, indeed
ok, I'm on it
jnthn I don't know quite how we should solve it
lizmat me neither yet... :-)
jnthn But I do note that
my %h is Bag = ...
Could also be made to work
e.g. you can initialize it in such a declaration 10:55
lizmat m: my %h is Bag = a => 42; %h<b> = 666
camelia rakudo-moar 6757a8: OUTPUT«Cannot modify an immutable Bag␤ in block <unit> at <tmp> line 1␤␤»
jnthn But it's immutable from there on.
Right, doesn't work today :) But it'd be quite nice, I think? :)
lizmat m: my %h is Bag = a => 42; dd %h 10:56
camelia rakudo-moar 6757a8: OUTPUT«Cannot modify an immutable Bag␤ in block <unit> at <tmp> line 1␤␤»
lizmat ah
ok
yup
dalek p: bd934a9 | (Pawel Murias)++ | src/vm/ (2 files):
Define TYPE_CHECK_CACHE_DEFINITIVE,TYPE_CHECK_CACHE_THEN_METHOD,TYPE_CHECK_NEEDS_ACCEPTS constants on the js and moar.

Rakudo should start using those instead of magic literals.
10:57
p: 88eb72b | (Pawel Murias)++ | docs/ops.markdown:
Document signal constants.
kudo/nom: 5586f1d | lizmat++ | src/core/List.pm:
Revert "Make "my @a is List = 1,2,3" work"

This reverts commit 6757a892611277d3d1edeaba366abca882757ff8.
As jnthn pointed out, this regressed:
   my \a = List.new; a = 1,2,3; # should fail
So back to the drawing board.
10:58
Zoffix m: my \Int = 'meow'; say Int
camelia rakudo-moar 6757a8: OUTPUT«===SORRY!===␤No compile-time value for Int␤»
timotimo we need to have a spectest for that ... didn't we just release with that commit in the release? 11:00
lizmat jnthn: how about List.new() assigning $!reified an empty list, indicating it cannot be assigned anymore ?
I mean, if it's a lazy list, there's always a $!todo *and* a $!reified 11:01
jnthn lizmat: I think we need to declare an API for this more generally 11:03
I mean, we already have "if you want to make a type that can be assigned to, implement STORE"
(Which we didn't yet implement for, say, BagHash and SetHash and MixHash, but surely should at some point)
lizmat m: my %h is BagHash = a => 42; dd %h 11:04
camelia rakudo-moar 6757a8: OUTPUT«Cannot modify an immutable BagHash␤ in block <unit> at <tmp> line 1␤␤»
jnthn It'd be nice to have some way to handle the initialize case.
lizmat hmmm
jnthn So that core types, and user types, know how to make my @a is MyOwnImmutableListyThing = ...; work 11:05
timotimo that'll be like a constructor, right?
jnthn We already differentiate initialization from other assignments in the compiler so...
timotimo: Yeah, I guess one slightly tempting idea is to say that you do it via new 11:06
lizmat so: when is STORE supposed to be called now?
jnthn lizmat: Assignments
lizmat in the Foo.new = 1,2,3 case?
jnthn Yes
timotimo needn't necessarily be "new", but something like that anyway
CREATESTORE or something
jnthn Note that `my @a = 1,2,3` is parsed and compiled differently from (my @a) = 1,2,3; 11:07
lizmat ok, so also my $a = Foo.new; ... ; $a = 1,2,3 # also calls STORE now, right ?
jnthn You can most clearly see that with state, fwiw
m: sub f() { state @a = say 'hi' }; f; f
camelia rakudo-moar 6757a8: OUTPUT«hi␤»
jnthn m: sub f() { (state @a) = say 'hi' }; f; f
camelia rakudo-moar 6757a8: OUTPUT«hi␤hi␤»
jnthn lizmat: Well, scalars are a special case :) 11:08
They're so common we don't go through the whole STORE thing. But aggregate types always call STORE
lizmat ah, ok TIL :-)
jnthn I don't quite know which way to go on it. It is vaguely tempting to say that 11:11
my @a = 1,2,3;
Compiles into Array.new((1,2,3)) or so
m: say Array.new((1,2,3))
camelia rakudo-moar 5586f1: OUTPUT«[1 2 3]␤»
jnthn m: say Hash.new((a => 1, b => 2)) 11:12
camelia rakudo-moar 5586f1: OUTPUT«{a => 1, b => 2}␤»
jnthn m: say Set.new((a => True, b => True))
camelia rakudo-moar 5586f1: OUTPUT«set(b => True, a => True)␤»
jnthn Heh :)
m: say Set.new((1,2,1,3))
camelia rakudo-moar 5586f1: OUTPUT«set(3, 1, 2)␤»
timotimo oh no, it fucked up the order! rakudobug!!!
jnthn Sets aren't ordered :P
jnthn submits timobug 11:13
;)
lizmat jnthn: wouldn't that be the simplest solution?
I mean my @a is List = 1,2,3 compiling to my @a := List.new(1,2,3) ? 11:14
jnthn lizmat: It feels like it. :) I'm still trying to think of downsides.
And doing it as part of construction is a natural way to ensure the immutability of immutable types works out 11:15
lizmat yup
and that would already fix my %h is Bag = a => 42
jnthn The only thing that makes it a bit trickier is the whole descriptor thing.
lizmat automagically
jnthn Right
lizmat descriptor thing ? 11:16
jnthn Yeah...remember $!descriptor or whatever it's called in Array and Hash?
m: my %h; say %h.name
camelia rakudo-moar 5586f1: OUTPUT«%h␤»
jnthn The thing that makes that work
lizmat ah, that 11:19
m: my $m := Map.new; $m.name 11:21
camelia rakudo-moar 5586f1: OUTPUT«Method 'name' not found for invocant of class 'Map'␤ in block <unit> at <tmp> line 1␤␤»
lizmat that's already an issue, or not ?
m: my $m := Hash.new; $m.name
camelia ( no output )
lizmat m: my $m := Hash.new; say $m.name
camelia rakudo-moar 5586f1: OUTPUT«Nil␤»
lizmat m: my $m := Hash{Int}.new; say $m.name
camelia rakudo-moar 5586f1: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Autovivifying object closures not yet implemented. Sorry. ␤at <tmp>:1␤------> my $m := Hash{Int}⏏.new; say $m.name␤»
lizmat m: my $m := Hash[Int].new; say $m.name 11:22
camelia rakudo-moar 5586f1: OUTPUT«Nil␤»
lizmat m: my $m := Hash[Int,Int].new; say $m.name
camelia rakudo-moar 5586f1: OUTPUT«Nil␤»
lizmat hmmm
jnthn I'd only expect it to work at all on `my %name is Foo` style declarations
If you .new something and happen to assign it or bind it to another symbol, that's not going to carry the name of the thing it happened to be bound to
Note that
lizmat yeah, duh :-) 11:23
jnthn m: my @a; sub foo(@b) { say @b.name }; foo(@a)
camelia rakudo-moar 5586f1: OUTPUT«@a␤»
lizmat brb
jnthn But yeah, tbh we never really formalized how this mechanism works, so it's kinda black magic today :)
lizmat jnthn: would you expect this to work then? 11:55
m: class A { has $.foo }; my %a is A = foo => 42; dd %a
camelia rakudo-moar 5586f1: OUTPUT«Cannot modify an immutable A␤ in block <unit> at <tmp> line 1␤␤»
jnthn lizmat: Probably not, because we'd pass a single positional argument to .new for this case 11:56
lizmat: Which is how coercions are meant to work per...hm, S13? :)
lizmat ok
just checking :-)
jnthn I don't think we'd want to process the RHS as an argument list, so it'd just be a Pair that got passed. Otherwise it ends up too different to STORE and too easy to do unintentionally, I guess. 11:57
I guess the reason I sorta consider whether we'd want a different mechanism than just using new is precisely so you opt in more explicitly, but given the default new takes nameds only then it's probably Good Enough. 11:58
And even when we do the passing auto-viv'd protos thing later, we'd be able to spot when you pass a positionl that ain't one of those and complain 11:59
lizmat so a class would only need to provide a new(*@a) candidate ?
jnthn So it'd still be opt-in
It could do that
Or since it's single arg rule applying maybe a new(+@a) is more natural
lizmat ah, yes
jnthn You could even do a new(Set \s) if you knew that, for example, you can construct yourself super-fast from a set. 12:00
lizmat indeed
jnthn I'd be curious what TimToady makes of all of this, anyways :)
He's good at spotting the downsides/issues I miss; ;)
timotimo yeah, it's kind of uncanny 12:01
lizmat ok, I'll leave this avenue of opts until TimToady has expressed an opinion 12:05
[Coke] lizmat++ jnthn++ 12:06
lizmat jnthn [Coke] timotimo: opinions about RT #128662 ?
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128662
lizmat personally, I'm in favour of silently returning self in both cases
it would require an errata fix 12:07
either way
timotimo sounds sensible to me
[Coke] I'm for "do nothing with nothing" 12:08
wow, are there a lot of core files on rakudo.org
lizmat I guess we have a @Larry consensus then 12:09
jnthn We tend to let degenerate cases degenerate gracefully, so "do nothing" feels more fitting 12:10
[Coke] RT: 1323; @LARRY: 2; CONC: 7; GLR: 5; JVM: 67; LHF: 1; LTA: 79; NEW: 870; NYI: 28; OSX: 6; PERF: 16; POD: 9; PRECOMP: 8; RFC: 22; SEGV: 24; STAR: 1; TESTNEEDED: 10; TODO: 8; UNI: 10; UNTAGGED: 655; WEIRD: 3 12:11
ooh, sounds like we're close to a fix on the CSRF issues with rakudo.org -> RT 12:12
(might be in place by tomorrow)
timotimo what a relief 12:13
dalek kudo/nom: 7354878 | lizmat++ | src/core/ (4 files):
Simplify a bunch of isnull() ?? !! to ifnull(,)

Why be more verbose when you can be more concise :-)
kudo/nom: d61eaed | lizmat++ | src/core/Str.pm:
Make Str.samemark("") return self instead of fail

Fixes RT #128662
  See also irclog.perlgeek.de/perl6-dev/2016-0...i_12867038
12:23
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128662
lizmat RT #128615 # huh? 12:24
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128615
lizmat ah, ok
dalek ast: 2aeb4db | lizmat++ | S32-str/samemark.t:
Correct test for RT #128662
12:26
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128662
lizmat ah, turns out I don't need to change 6.c-errate, as there is no test for the behaviour of .samemark("") there 12:28
[Coke]: or do you think I should add one there ?
[Coke] I think leaving that test in master is fine. 12:31
that will insure we don't backslide. 12:32
lizmat oki 12:37
Frameless
.oO( backslide insurance )
12:46
Was there a reason why the bail out feature of TAP was not implemented in Test.pm6? 12:48
( testanything.org/tap-version-13-sp...l#bail-out ) 12:49
timotimo never needed so far, apparently? 12:50
lizmat Frameless: it *is* apparently available in Tap.pm6
Frameless Then I'll add it to Test.pm6 as sub bail-out ($reason?) { ... }, unless there are objections. 12:52
lizmat Frameless: well, adding subs technically falls under a different release, aka 6.d, no jnthn ? 13:03
although personally, I don't have a problem with it
Frameless Oh 13:04
lizmat s/release/version/ 13:05
I guess we could consider it a bug fix :-()
jnthn lizmat: Hm, we're talking about Test.pm6 though? 13:08
lizmat: The "new version" rules were for CORE.setting really
Frameless jnthn: yes, we're talking about Test.pm6 13:10
timotimo we're also doing a bunch of things to NativeCall without thinking about 6.c too terribly much
Frameless Same with subtest() in Test.pm6. It's already isn't 100% compatible with 6.c. The subtest Str, Code; version won't work on old enough 6.c compiler. 13:11
lizmat jnthn timotimo : just checking :-)
so Frameless: go ahead :-)
Frameless bisect: use Test; subtest "Foo", { ok 1 } 13:12
\o/
bisectable Frameless: Exit code on a 'good' revision is 1 (which is bad), bisecting with inverted logic
Frameless: bisect log: gist.github.com/90635a56f111589e0d...509397532c
Frameless: (2016-05-16) github.com/rakudo/rakudo/commit/e239f6e
dalek kudo/nom: da903a3 | lizmat++ | src/core/Cursor.pm:
Streamline Cursor.MATCH_SAVE a bit
13:40
kudo/nom: 34f7f36 | lizmat++ | src/core/Label.pm:
Streamline Label.new a bit
kudo/nom: 147be4f | lizmat++ | src/core/Mu.pm:
Streamline Mu.gistseen/perlseen a bit
kudo/nom: 649ff44 | lizmat++ | src/core/PseudoStash.pm:
Streamline PseudoStash.(AT|BIND|EXISTS)_KEY a lot
p: b2774c9 | (Pawel Murias)++ | docs/ops.markdown:
Document nqp::readcharsfh.
13:51
p: 9f5cbb7 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Implement nqp::readcharsfh.
ar: ebd5137 | coke++ | README (2 files):
fix some wiki references
13:52
[Coke] I will give the .msi process a shot later tonight. 13:54
Frameless dreams of passing The Joel Test for Rakudo/R* builds 13:58
Single-step build. For all OSes \o/
www.joelonsoftware.com/articles/fog...00043.html
dalek p: 7f194cc | (Pawel Murias)++ | src/vm/jvm/ (5 files):
A slow implementation of nqp::readcharsfh for the JVM.
13:59
p: ae11894 | (Pawel Murias)++ | / (5 files):
Merge branch 'master' of github.com/perl6/nqp
p: 3f34d27 | (Pawel Murias)++ | t/nqp/019-file-ops.t:
Test nqp::readcharsfh.
14:01
kudo/nom: 6ef9e08 | lizmat++ | src/core/ (3 files):
Eradicate !=== from the setting

For some reason a !=== a is 5x as slow as !(a === a)
14:57
lizmat afk& 15:00
dalek ar: f23dc6d | (Steve Mynott)++ | tools/build/module-install.pl:
fix local module install on windows
15:23
stmuk pl6anet.org/drop/rakudo-star-2016.0...T)-RC1.msi 15:36
timotimo sweet 15:57
[Coke] stmuk++ # thanks! 16:09
stmuk compulsively washes after handling windows 16:14
gfldex stmuk: i was able to install zef via panda --notests and zef works fine 19:37
R[DaneelOlivaw] It may be worth considering having zef as default installer shipped with R* 19:40
Considering even panda's author suggested so (/me forgets exact words tho)
Ah, here. "regarding the discussion, shipping zef instead of panda with R* may be a good idea, with zef being much more actively maintained" irclog.perlgeek.de/perl6/2016-06-21#i_12704273 19:42
It also supports uninstall
And installs the prereqs only if the entire prereq chain + wanted module are all found succeed their tests 19:44
(with --serial option to use the install-what-you-can behaviour) 19:45
moritz R[DaneelOlivaw]: IMHO it's isntead time to start a new distribution 20:30
R[DaneelOlivaw]: one with a much clearer agenda
R[DaneelOlivaw]: like "compiler, module installer and all its dependencies"
instead of star's "some if this, some of that, yeah, whatever" 20:31
s/if/of/
[Coke] star was, in my mind, there to give something package like before we had os packages. 20:32
Having a prebuilt bundle for mac, windows, etc. seems like a good idea, but I'd be happy with, as moritz said, compiler/module installer"
lizmat jnthn: wrt to the .STORE being used to initialiize %h and @a 20:58
I guess we're talking about altering the code in Actions, lines 8144 (for @) and 8174 (for %) ? 21:00
if so, I'm not seeing how we could map in the "is List", "is Map" in there 21:01
Zoffix moritz++ that's a very good point actually. 21:25
ugexe, are there any sort of stats available from your zef "ecosystem"? Like, what's the most-installed module, etc.
geekosaur star wanted to grow up to be the batteries included distribution, but somewhere along the line it lost its way 21:28
timotimo carry on, my wayward star / there'll be peace when you're far? 21:32
jnthn lizmat: I'm dead tired, will have to take a look tomorrow. Harrass me if I forget. :-) 21:36
lizmat ok jnthn,
:-)
get untired soon! 21:37
jnthn :)
Planning to hack on Perl 6 stuff all day on Thursday :)
lizmat looking forward to it :-) 21:38
jnthn Me too :) 21:40
'night
Zoffix night
lizmat gnight jnthn 21:45
dalek kudo/nom: 8cfd343 | lizmat++ | src/core/stubs.pm:
Streamline dynamic variable lookup

  - lookup from the same dynamic scope 2x as fast
  - no allocation per lookup anymore
lizmat good night, #perl6-dev! 22:08
Zoffix night
ugexe Zoffix: if you mean the zef.pm site, thats all tony-o and i admittedly dont know. but the service isn't finished yet and tony-o has been busy 22:25
zef just uses github.com/ugexe/Perl6-ecosystems for its package list, which is generated like perl6/ecosystem, but available to `git` (a way to workaround chicken/egg problem re: behind a proxy and downloading the initial package list) 22:26
Zoffix thanks 22:29
Test.pm6's code is really LTA. 22:56
Spaghetti
timotimo the Test.pm6 we use for spec testing better be rather fast ... 22:57
Zoffix Was that why it was written that way? 22:59
timotimo could be
Zoffix Awesome. Started a spectest run. Went for a quick jam. Came back: VM is frozen solid :( 23:40
dalek kudo/nom: 58dc8c6 | (Zoffix Znet)++ | lib/Test.pm6:
Add bail-out to Test.pm6

Aborts the test run using the Bail out! feature of the TAP protocol. Exit code set to 255 to mirror Perl 5's BAIL_OUT behaviour, which I assume is sane.
References:
  testanything.org/tap-specification...l#bail-out
  metacpan.org/pod/Test::More#BAIL_OUT
23:51
ast: dd5aaf5 | (Zoffix Znet)++ | S24-testing/7-bail_out.t:
Add tests for Test.pm6's bail-out() function

Added to Rakudo in github.com/rakudo/rakudo/commit/58dc8c6185
23:52