Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_logs/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by AlexDaniel on 12 June 2018.
00:04 MasterDuke left 00:07 j3nnn1 left 00:08 MasterDuke joined
Geth nqp: 8d7738ec87 | (Daniel Green)++ | src/vm/js/nqp-runtime/.core.js.swn
Remove another vim swap file
00:11
00:55 stmuk_ joined 00:57 stmuk left 01:49 stmuk joined 01:51 stmuk_ left 02:38 ufobat___ joined 02:41 ufobat_ left
Geth nqp/truffle: 4282d2f1e3 | (Daniel Green)++ | 3 files
[truffle] Implement nqp::<ordbaseat replace> ops
03:15
03:20 MasterDuke left 03:42 benji__ left 04:05 BenGoldberg joined 05:08 BenGoldberg left 05:29 brrt joined 05:38 Ven` joined 05:42 Ven` left 05:51 robertle joined
[Tux] Rakudo version 2018.06-144-g08a54212e - MoarVM version 2018.06-142-gc7627e511
csv-ip5xs0.994 - 1.019
csv-ip5xs-208.922 - 9.060
csv-parser27.964 - 28.454
csv-test-xs-200.439 - 0.458
test9.484 - 9.894
test-t2.480 - 2.487
test-t --race1.027 - 1.097
test-t-2043.680 - 47.263
test-t-20 --race15.233 - 15.535
06:10
nine Looks like csv-ip5xs lost a lot after the rescalar merge :/ 06:41
brrt :-( 07:15
ohai nine. btw, did you see some of the angry jit-nativecall bugs 07:16
I was thinking, maybe we can move the jit-nativecall bit to an expression tree
07:42 lizmat joined
lizmat Files=1242, Tests=76399, 326 wallclock secs (15.98 usr 5.79 sys + 2272.25 cusr 228.95 csys = 2522.97 CPU) 07:58
08:23 [TuxCM] left 08:30 Ven` joined
nine brrt: yes, saw them but I currently don't seem to have time and energy to have a closer look. Vacation next week ought to fix that though :) 08:46
brrt :-) 08:51
09:16 lizmat left 09:19 lizmat joined 09:22 robertle left 09:30 nativecallable6 joined
Ulti brrt: made it to the front page ;) news.ycombinator.com/item?id=17496789 09:35
09:39 lizmat_ joined, brrt left 09:40 lizmat left 09:47 [TuxCM] joined 09:49 lizmat_ is now known as lizmat
AlexDaniel so I'm looking through toaster failures 09:51
yoleaux 10 Jul 2018 14:39Z <tyil[m]> AlexDaniel: if the perl community were to get it's own Matrix homeserver, would it be interesting to link both perl.org and freenode's #perl6 channels to them?
AlexDaniel it's interesting! 09:52
a lot of stuff depended on XML and there's a PR for that already
but, for example, module ANTLR4::Grammar works fine with MVM_SPESH_DISABLE=1 and fails otherwise 09:53
that's a lot of stuff to go through so I guess I'll be filing a bunch of tickets shortly 09:54
just to make it manageable
jnthn AlexDaniel++ 10:02
There's a lot of spesh changes, a lot of new use of spesh plugins, and Scalar has been extensively re-worked. 10:04
AlexDaniel release process is going to be fun then :) 10:05
jnthn There's also a spesh branch that will merge shortly that contains some fixes, and helps us sanity-check the spesh graph better.
Yeah. I'm also now remembering why I do spesh works in chunks. Once I'm zoned in to that it's hard to do anything else.
10:22 pmurias joined 10:37 brrt joined
AlexDaniel samcv: so the gist of your changes is “now stuff is randomized not just per run, but all the freaking time”, is that right? :) 10:39
I see one module that's unhappy about that, yeah 10:40
samcv AlexDaniel: yes. if you add a key to the hash then the order will change completely
also before:
AlexDaniel c: 2018.06,HEAD say <a b c d ef gh>.Set.Str for ^30
committable6 AlexDaniel, gist.github.com/461302fa671a4eeb55...a839a6e1a7
samcv m: my %hash; for ^10 { %hash{$_} = 1}; say %hash.keys
camelia (1 5 3 4 0 2 7 6 8 9)
samcv my %hash; for ^10 { %hash{$_} = 1}; say %hash.keys; my %hash2; for ^10 { %hash2{$_} = 1}; say %hash2.keys 10:41
evalable6 (9 6 3 5 7 4 1 2 0 8)
(0 8 1 2 7 4 9 3 6 5)
samcv also before, this would have the same result, i mean it would be different each startup of moarvm, but two branch new hash's with elemnts added in the same order would have the same order
AlexDaniel yeah, that 10:42
I see, thanks
samcv if you did all operations identical between the two hashes they wolud have the same order (assuming they have the same number of buckets)
AlexDaniel yeah
samcv also at NL perl workshop some people told me that they think having in order hashes as a type is useful. so we could add ordered hashes later if people wanted them 10:43
10:46 brrt left
AlexDaniel FWIW my goal is to send a bunch of PRs first, and then we'll think what should be done about all that 10:49
10:50 Ven` left
Geth nqp: f8f7d34b36 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Map a new istype_nd ("no decont") op on MoarVM
10:54
lizmat oooo wow 10:56
that would allow cleaning up a lot of HLL code (if the JVM backend would also have it)
jnthn Would it?
jnthn is curious where
There's now a few nqp::blah_nd ops though 10:57
lizmat there's a lot of candidates that have an explicit nqp::istype(nqp::decont)
jnthn They can save some nqp::p6var
uh...what?
lizmat no?
jnthn You understood backwards, I think
nqp::istype($a, $b) deconts *both* $a and $b
The new op does neither
lizmat ah.... hmmm
lemme double check
Geth rakudo: 7dfc60235d | (Jonathan Worthington)++ | tools/build/NQP_REVISION
Bump NQP for new istype_nd op on MoarVM
10:58
rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....1-gf8f7d34
1b3dd35e54 | (Jonathan Worthington)++ | src/Perl6/Actions.nqp

Previously, a method like:
   multi method chars(Str:D: --> Int:D) {
   nqp::p6box_i(nqp::chars($!value))
   }
... (13 more lines)
lizmat jnthn: indeed, got it backward *and* was thinking of something else 11:01
so the _nd versions are for cases where you *know* things have been deconted already, right ?
jnthn Yes 11:02
But...be careful :)
Remember that spesh strips out many pointless ones
And it's an icky bug if we mis-use it 11:03
The best place to use them is in places where you explicitly did a decont yourself
lizmat but would doing an explicit decont not be worse? 11:07
jnthn Not if you need to do one :P 11:08
lizmat I mean, the "standard" versions would do the decont internall, so one fewer op to process, no?
jnthn No, the standard versions compile into decont + the op
You don't see it, but code-gen emits it :)
lizmat also on JVM ? 11:09
seem to recall it being an issue there sometimes, so an explicit decont was needed
jnthn No, there it's currently scattered across the op bodies
lizmat or have 2 versions of code: yuk
jnthn Though in theory they should match up :)
lizmat ok, well, for now I will refrain from mucking with that until after the 2016.07 release 11:10
11:11 brrt joined 11:35 robertle joined 11:43 Ven` joined
Geth roast/Unicode-11.0: de629d08c5 | (Samantha McVey)++ | 3 files
Update Emoji Tests to version Unicode version 11.0
11:44
samcv ugh. collation broke once i updated unicode. so will take longer to update than i had hoped. bbl 11:45
Geth rakudo: 86846ac50c | (Zoffix Znet)++ | src/core/IO/Handle.pm6
Check if $!decoder is setup in IO::Handle.encoding…

  …before we assume no work is needed. This likely won't be
needed when R#2039 github.com/rakudo/rakudo/issues/2039 is fixed to setup the decoder right when encoding is set on creation.
12:28
synopsebot R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup
Geth rakudo/handle-6.d: 62 commits pushed by (Jonas Kramer)++, (Jonathan Worthington)++, (Elizabeth Mattijsen)++, (Zoffix Znet)++
review: github.com/rakudo/rakudo/compare/0...ae3789f36a
12:46 Zoffix joined
Zoffix What's :$replacement in IO::Handle.encoding? 12:46
timotimo i think it's what you get when a character can't be encoded in the target encoding 12:47
jnthn Replacement char if the string contains something not possible to encode
Zoffix Thanks.
jnthn (In the specified encoding)
timotimo maybe also what you get when there's garbage in the data to be decoded?
Zoffix And :$strict is part of spec now or what's happening? I recall there being something about this blocked from changing because we can't do caller's lang version yet? 12:50
12:50 j3nnn1 joined
Zoffix I know what our marketing alias should be: Mistery. 12:55
If you read the source you'll find all of these mystery options that aren't specced or documented and half the core devs don't even know what they are :P
12:56 Zoffix left
lizmat
.oO( Worri )
12:58
and people using Worri would be Worriors :-)
although, "Misterians" also has a ring to it :-) 12:59
stmuk Mysterons
13:01 lizmat left 13:04 lizmat joined
jkramer I like Rakudo as a name. And the mascot should be a raccoon. 13:04
AlexDaniel rakudo name is unfortunately taken by another software project :P 13:07
jkramer Raccoodo? 13:09
jkramer just likes raccoons :)
13:10 Zoffix joined
Zoffix AlexDaniel: rename Rakudo :) 13:10
To Rokudo
AlexDaniel two renames for the price of one!
lizmat www.rakudodining.com # mjammie 13:11
Zoffix "Ideally the language itself would be "Rakudo" ("Way of the Camel") and the current implementation would be "Rokudo" ("Way of Six")"
jkramer Or make rakudo really fast and name it Rockedo
Zoffix Tho Camel is already taken by another language :)
Chonomichi 13:12
"The way of the butterfly", according to google translate: translate.google.ca/#en/ja/the%20w...0butterfly
brrt 'no michi' appears to be 'way of' 13:15
if I'm guessing language correctly
'butterflies' is 'cho' 13:16
Zoffix "Kinaru" = "marvelous"
brrt which is nicely close to 'cro', so...
stmuk jitenshaokiba-do
Geth rakudo: f830bf344e | (Elizabeth Mattijsen)++ | 5 files
Make .sum a multi

Needed for some future optimization
13:33
Zoffix grr... fixing R#2039 makes IO::Handle.new(:path(self)).open(:bin) break, because decoder is setup in TWEAK -_- 13:41
synopsebot R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup
Zoffix (that was from IO::Path.slurp and I'm guessing probably used in the wild too; and if it isn't then we're paying to setup a decoder in TWEAK that won't ever be needed -_-) 13:42
.new should have all the arguments about encodings and .open should only have open modes. 13:43
*1 set of open modes
lizmat I think this all comes from the fact that IO::Handle.new doesn't open 13:45
what is the use of creating an IO::Handle object if you're not going to open a file with it ? 13:46
Zoffix yeah 13:47
lizmat if this is about delaying opening a file, putting a more generic solution such as Object::Trampoline in core, would make much more sense 13:49
13:49 brrt left
samcv Zoffix: i believe strict is speced at least for some things 13:51
or maybe i thought wrong
Zoffix samcv: yeah, for .encode/.decode it is 13:52
oh wait, that was :replacement
samcv anyway i wanted strict to be in roast. it should be specced anyway
Zoffix Don't see any encoding-related matches for `strict` 13:53
samcv and atm it only works for windows-1251 and windows-1252. and most other encodings do strict by default. though latin-1 may be unstrict by default
essentially the reasoning is that our encode/decoder would let invalid but ascii codepoints through windows-1252
and if you tried to open them in most things it'd say the document was corrupted. so strict will enforce only valid codepoints into that encoding 13:54
Zoffix R#448 13:55
synopsebot R#448 [closed]: github.com/rakudo/rakudo/pull/448 Prevent calling .clone with new attributes affect the original
samcv m: for ^255 { .chr.encode('windows-1252', :strict) }
camelia Error encoding Windows-1252 string: could not encode codepoint 128
in block <unit> at <tmp> line 1
Zoffix I mean
S#448
synopsebot S#448 [open]: github.com/perl6/roast/issues/448 [need to write tests] :$strict option for encoding/decoding related operations isn't specced
samcv m: for ^255 { .chr.encode('latin1') } 13:56
camelia ( no output )
Geth rakudo: zoffixznet self-unassigned LTA IO::Handle.encoding can have a value, but no valid decoder is setup github.com/rakudo/rakudo/issues/2039
5a9168e788 | (Elizabeth Mattijsen)++ | 5 files

This reverts commit f830bf344ecafb10f7c8d769d390e31b3fba2de9.
This actually almost doubles the time for List.sum. Not sure what is going on here, but it looks like List.sum gets OSR'd in the "method" case, but doesn't even get JITted in the multi case. Weird!
13:58
samcv Zoffix: well ok it seems latin1 on ruby will let you put in lower control characters but not 129.chr though lower controls aren't specced. which seems fine enough. lower controls aren't ambiguous at all 14:01
and we should probably do something like that for latin1 14:02
Geth 6.d-prep: 133fcbb0fb | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md
Add TODO: Remove all proptests for IO::Handle.new's attribute-setting
14:05
14:32 brrt joined 14:41 Zoffix left
Geth rakudo: 88e913b62e | (Elizabeth Mattijsen)++ | src/core/native_array.pm6
Make native array.sum faster

  - 1.2x as fast by default by not using Any::sum anymore
  - 35x as fast with specifying the :wrap named variable
The latter will do *all* calculations in native ints: should the sum of the native array exceed the size of the "int" type, then it will silently wrap. This may or may not be what you want, hence the optional named variable.
14:51
rakudo: bduggan++ created pull request #2051:
Improve the error message for slicing a shaped array
15:10
15:13 robertle left
Geth roast: c313c0a238 | (Elizabeth Mattijsen)++ | S09-typed-arrays/native-int.t
Add tests for my int @a; @a.sum(:wrap)
15:20
nqp: 2b12cad8f5 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Map hllboxtype_* on MoarVM backend
15:28
15:31 lizmat left 15:33 lizmat joined 15:38 robertle joined 15:48 [TuxCM] left
Geth nqp: 668be5c2d8 | (Jonathan Worthington)++ | 2 files
Provide hllboxtype_* ops on JVM backend
15:54
16:14 tyil[m] joined 16:23 Ven` left 17:15 [TuxCM] joined 17:44 j3nnn1 left 18:28 brrt left 18:49 pmurias left 18:53 Ven`` joined 19:03 stephane_ left 19:09 dogbert17 left 19:17 lizmat left 19:24 lizmat joined 19:30 cognominal joined 20:09 cognominal left 20:16 cognominal joined 20:40 MasterDuke joined 21:41 MasterDuke left 21:44 MasterDuke joined 21:48 Ven`` left 21:58 Ven`` joined 21:59 Ven`` left
Geth rakudo: 5682ee1f12 | (Elizabeth Mattijsen)++ | src/core/native_array.pm6
Make my int @a = ^5000 about 1.7x as fast

By not binding values to specific indices, but just pushing values onto the native array.
22:03
lizmat timotimo: ^^^
timotimo oh, neat 22:05
lizmat yeah, apparently push is a lot faster than bindpos_i() and keeping an index 22:06
timotimo the only thing i could think of to make this even faster is unroll the loop a tiny bit
like, do 5 pushes at a time before checking $val against $max again 22:07
unlikely to have a good impact
actually, it could be noticable 22:08
lizmat that would require extra logic that would grow the code in size 22:09
I just realized there are some other cases that could benefit from this change 22:10
but am too tired to do that now
so tomorrow&
timotimo the code grows, but more importantly, the section of code between gotos grows 22:11
it'd be cool if we could throw out the boundary check inside push because we already have our own check, but that's probably really tricky 22:12
lizmat timotimo: but that's the thing: the array starts from 0 elements: there is no max value known to the array 22:15
now, if we would have something like a push that and an internal index, that would allow you to push until the end of the array is reached 22:16
that might work
timotimo yeah, $max is the max value, not the number of times we push 22:17
that's what makes it extra tricky
lizmat so, basically something like nqp::setelems(@a,10000); nqp::set_index(@a,0), nqp::while( nqp::push_i(@a,++$val), nqp::null) 22:18
anyways, bedtime :-)
&
timotimo we don't even need to set_index, i don't think 22:19
just make the hypothetical push instruction return false when the internal storage capacity (which we set with setelemspos) is reached
Geth nqp/new-runner-enable-execname: 6997926ffc | 陈梓立++ (committed using GitHub Web editor) | 0 files
Update install-moar-runner.pl
22:21
timotimo oh what the heck, we have getattrs_o there even though the string is const_s right before it 22:23
i wonder what blew that opt
OK, we don't know anything about the thing we're getting attributes from, so the opt just nopes right outta there without even doing the "const string known" opt 22:25
doesn't matter for the hot loop portion anyway
the code is rather tight. only thing that could be better is that it's using lexicals for $val and $max. not sure why that isn't lowered to be locals instead 22:27
Geth nqp: 2e053da6fb | 陈梓立++ (committed using GitHub Web editor) | 2 files
Pass --execname to nqp thus nqp::execname() works (#479)

Only for MoarVM backend, now `nqp::execname()` give out the execution path as defined.
22:55
23:04 Kaiepi left 23:05 travis-ci joined
travis-ci NQP build errored. 陈梓立 'Pass --execname to nqp thus nqp::execname() works (#479) 23:05
travis-ci.org/perl6/nqp/builds/402890259 github.com/perl6/nqp/compare/668be...053da6fbf7
23:05 travis-ci left, Kaiepi joined