Zoffix | m: say Perl6::Metamodel::SubsetHOW | 02:09 | |
camelia | rakudo-moar 18455a: OUTPUT«Could not find symbol '&SubsetHOW' in block <unit> at <tmp> line 1Actually 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 1Actually 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«hihi» | ||
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 |