Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
00:00 ggoebel_ left 00:01 ggoebel left
timotimo turns on the TUI 00:04
00:05 lizmat left
timotimo recompiles with --optimize=0 00:05
do you know about the tui? 00:08
it's much easier to see where in the code you're stepping after you "tui enable"
Because the arrow keys scroll the active window in the TUI mode, they are not available for their normal use by readline unless the command window has the focus. When another window is active, you must use other readline key bindings such as C-p, C-n, C-b and C-f to control the command window. 00:09
ehhh 00:10
MasterDuke tui for gdb or debugserver?
timotimo gdb 00:11
hum. i'll begin preparations for going to bed, actually
but i was hoping i could step-a-step-step until i get much closer to the problematic spot
actually, perhaps i'll even rr record this 00:12
MasterDuke huh, never knew about that
timotimo heay, it's hidden behind the incredibly intuitive keybind C-x C-a ;)
MasterDuke those look emacs-related?
timotimo yeah 00:13
MasterDuke huh, this could be nice...
but if you're going to record this in rr, i'm going to kill my gdb/debugserver session 00:14
because the daughter got to this computer and the keyboard very much needs a wash 00:15
timotimo hah
having it recorded in rr doesn't allow usage of the debugserver, though
but it ought to be easy-ish enough to get it up again
00:16 ggoebel joined
MasterDuke oh, right. i'll just trying stepping in it to see what happens 00:16
timotimo good luck!
00:16 ggoebel_ joined
MasterDuke thanks, and for all the help 00:16
00:16 p6bannerbot sets mode: +v ggoebel
timotimo YW, and thanks for working on this :) 00:17
00:17 p6bannerbot sets mode: +v ggoebel_ 00:38 Kaiepi left, PufferBot left 00:41 PufferBot joined, MasterDuke left, p6bannerbot sets mode: +v PufferBot 00:42 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi
tbrowder__ timotimo: thnx for the help, build looking good so far... 00:50
00:53 ZzZombo_ left, ZzZombo_ joined, hitchcock.freenode.net sets mode: +v ZzZombo_, p6bannerbot sets mode: +v ZzZombo_, ZzZombo_ is now known as ZzZombo 01:14 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 01:18 ZzZombo left
tbrowder__ well, master build fails, what now? 01:36
goind to bed now, i hope someone can leave me a hint for tomorrow. i have a PR ready if i can get a good spectest to work from. 01:38
01:51 Kaiepi left 01:52 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 02:12 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo 02:33 ZzZombo left 02:35 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo 02:41 ZzZombo left, ZzZombo_ joined, ZzZombo_ is now known as ZzZombo, p6bannerbot sets mode: +v ZzZombo
releasable6 Next release in ≈1 day and ≈15 hours. 1 blocker. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 03:00
03:02 Ulti joined, sjn joined, sivoais joined, sivoais left, sivoais joined, p6bannerbot sets mode: +v sivoais 03:03 p6bannerbot sets mode: +v Ulti, p6bannerbot sets mode: +v sjn, p6bannerbot sets mode: +v sivoais 03:07 tony-o joined 03:08 p6bannerbot sets mode: +v tony-o 05:48 AlexDaniel left 06:11 patrickb joined, p6bannerbot sets mode: +v patrickb 06:27 robertle_ joined 06:28 p6bannerbot sets mode: +v robertle_ 07:46 lizmat joined 07:47 p6bannerbot sets mode: +v lizmat
lizmat Files=1251, Tests=76117, 343 wallclock secs (15.75 usr 5.43 sys + 2399.00 cusr 237.84 csys = 2658.02 CPU) 07:55
08:04 Ven`` joined 08:05 p6bannerbot sets mode: +v Ven``
lizmat .ask jnthn I think we need a decoder.reset function, as otherwise we will have to fetch the $!decoder from the $!handle for each .pull-one in the GetLineFast iterator 08:18
yoleaux lizmat: I'll pass your message to jnthn.
lizmat .tell jnthn case in point: my $h = open("ten"); for $h.lines { .say; $h.close } 08:22
yoleaux lizmat: I'll pass your message to jnthn.
08:53 tobiash12 joined 08:54 tobiash12 left 09:26 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel, Ven`` left 09:29 OliPicard__16 joined 09:30 OliPicard__16 left
samcv lizmat: i'm not sure about that file handle thing unfortunatly 10:21
lizmat samcv: fair enough :-) 10:26
10:27 ZzZombo left
timotimo lizmat: i just claimed i'd file a doc repo issue for the "new" page, but you were 2 mins faster than me; will you file the issue? 10:40
lizmat I'm happy for you to file it :-) 10:41
or Todd
now for something completely different: 10:44
m: my $l := (1,2,3); dd $_ for $l
camelia 1
2
3
lizmat m: my $l = (1,2,3); dd $_ for $l
camelia List $l = $(1, 2, 3)
lizmat feels a bit inconsistent to me: how to explain that to laypeople ? 10:46
10:49 MasterDuke left 10:50 j1mc_polari joined 10:53 j1mc_polari left
timotimo i'm mildly surprised -M./Foo works 11:06
binding lets you screw with containers, and containerization is how loops and other things figure out whether to descend into something or iterate it as a single item 11:07
lizmat yeah, I figured I would need to focus on the containerization 11:08
11:16 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix lizmat: assignment gives you shortcuts, like creating a Scalar container with $ sigils and creating Array/Hash with @/% sigils: perl6advent.wordpress.com/2017/12/02/ 11:16
(not sure which part you meant is inconsistent) And Scalar containers cause things with multiple things in them (like lists) to be treated as a single thing. 11:22
lizmat Zoffix: I still love that article 11:23
Zoffix .tell tbrowder__ well, like the old adage goes: xkcd.com/1597/ Nuke everything and build anew. There's also ZScript that simplifies building various bits of the system: github.com/zoffixznet/z 11:24
yoleaux Zoffix: I'll pass your message to tbrowder__.
lizmat but I'm more going for a less deeply involved audience
Zoffix cool 11:25
Zoffix g2g
11:25 Zoffix left
tbrowder__ .tell Zoffix you’re right, time to changeover to ZScript, just have to do it gently so as not to hurt anything in the changeover... 11:27
yoleaux tbrowder__: I'll pass your message to Zoffix.
11:24Z <Zoffix> tbrowder__: well, like the old adage goes: xkcd.com/1597/ Nuke everything and build anew. There's also ZScript that simplifies building various bits of the system: github.com/zoffixznet/z
11:43 cheets10 joined 11:44 cheets10 left 11:47 cybernaut18 joined 11:50 cybernaut18 left 11:51 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo 12:56 lizmat left 12:58 patrickb left 12:59 lizmat joined 13:00 p6bannerbot sets mode: +v lizmat 13:06 animeshs joined 13:11 animeshs left
lizmat m: sub a($*a) { dd $*a }; a 42 # should this even be allowed? 13:22
camelia 42
timotimo why not?
lizmat m: sub a($*a) { dd $*a.VAR.dynamic }; a 42 # it's *not* a dynamic variable
camelia Bool::False
timotimo same behaviour as sub a($!a) / } i think? 13:23
oh
well, that's not good :)
lizmat so you're saying that should just be a dynamic variable
timotimo that'd be my intuition 13:24
lizmat m: sub a($*a) { }; dd &a.signature.params[0] 13:25
camelia Parameter $*a = $*a
lizmat m: sub a($*a) { }; dd &a.signature.params[0].twigil
camelia ""
13:26 araraloren joined
lizmat I'll make a ticket 13:27
13:27 p6bannerbot sets mode: +v araraloren
lizmat R#2276 13:36
synopsebot R#2276 [open]: github.com/rakudo/rakudo/issues/2276 [@LARRY][NYI][consistency][question] What should the * twigil do as a parameter?
timotimo i might not get to making that ticket inspired by the mail about "new" in the docs 13:57
lizmat spectesting fix for #2275 14:21
14:29 AlexDaniel left
Geth rakudo: 39f2d68a11 | (Elizabeth Mattijsen)++ | src/core/Parameter.pm6
Make Parameter.twigil also work on dynamic Parameters

Fixes R#2275
14:32
synopsebot R#2275 [open]: github.com/rakudo/rakudo/issues/2275 Twigil method return nothing for variable
Geth roast: c60405b224 | (Elizabeth Mattijsen)++ | S06-signature/introspection.t
Add tests for R#2275
14:48
synopsebot R#2275 [open]: github.com/rakudo/rakudo/issues/2275 Twigil method return nothing for variable
lizmat m: sub a($a) { }; my $b = 42; for ^1_000_000 -> int $_ { }; say now - INIT now 15:01
camelia 0.02119011
lizmat m: sub a($a) { }; my $b = 42; for ^1_000_000 -> int $_ { a($b) }; say now - INIT now
camelia 0.0643862
lizmat m: sub a($a is rw) { }; my $b = 42; for ^1_000_000 -> int $_ { a($b) }; say now - INIT now
camelia 0.036639
lizmat interesting numbers
m: say (0.0643862 - 0.02119011) / (0.036639 - 0.02119011) 15:02
camelia 2.79606431
lizmat jnthn: is this perhaps an opt opportunity, if you can prove $a doesn't get assigned to inside sub $a ? 15:03
15:07 AndreSomers23 joined 15:08 lucasb joined 15:09 p6bannerbot sets mode: +v lucasb 15:13 AndreSomers23 left 15:20 obedmr15 joined 15:22 araraloren left 15:23 obedmr15 left
[Tux] Rakudo version 2018.08-100-g39f2d68a1 - MoarVM version 2018.08-76-gf8fb3a97a
csv-ip5xs0.904 - 1.026
csv-ip5xs-207.226 - 8.119
csv-parser23.761 - 25.901
csv-test-xs-200.429 - 0.444
test8.746 - 9.500
test-t2.025 - 2.062
test-t --race0.883 - 0.897
test-t-2035.165 - 38.760
test-t-20 --race11.598 - 12.225
15:23
15:41 Kaiepi left, Kaiepi joined
Geth roast: d3ad9146ad | (Elizabeth Mattijsen)++ | S02-names/is_dynamic.t
Add tests for R#2276
15:42
synopsebot R#2276 [closed]: github.com/rakudo/rakudo/issues/2276 [consistency][testneeded] What should the * twigil do as a parameter?
15:42 p6bannerbot sets mode: +v Kaiepi 15:53 lucasb left 16:11 jemershaw9 joined 16:14 jemershaw9 left 16:19 Kaiepi left 16:20 Kaiepi joined 16:21 p6bannerbot sets mode: +v Kaiepi 16:45 lizmat left 16:47 lizmat joined 17:07 Kaiepi left 17:08 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 17:09 robertle_ left 17:23 or4n26 joined, or4n26 left 17:33 patrickz joined, p6bannerbot sets mode: +v patrickz 17:36 Hobby_boy27 joined 17:37 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 17:39 Hobby_boy27 left 17:58 ggoebel_ left, ggoebel left 18:03 Kaiepi left 18:11 Kaiepi joined, ggoebel joined, ggoebel_ joined 18:12 p6bannerbot sets mode: +v Kaiepi, p6bannerbot sets mode: +v ggoebel, p6bannerbot sets mode: +v ggoebel_ 18:27 swolffs joined 18:33 swolffs left 18:47 archerseven joined 18:53 archerseven left
b2gills samcv: I noticed that there doesn't seem to be a stream decoder for utf16 `'test.in'.IO.open(:enc<utf16>).lines` result: `Streaming decode NYI for encoding 4` 19:33
samcv: This is important as programs on Windows tend to default to utf16
samcv b2gills: yeah atm we only have non-stream decoder 19:35
b2gills Is there a way to fall-back to the non-stream decoder? 19:36
samcv i don't think so. other than reading it as binary and then doing .decode
19:51 AlexDaniel left, AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 20:05 lucasb joined
samcv b2gills: also it seems i cannot do $fh.write: 'hello'.encode('utf16') 20:05
i get write_fhb requires a native array of uint8 or int8
20:05 p6bannerbot sets mode: +v lucasb
samcv m: say 'hello'.encode('utf16') 20:06
camelia utf16:0x<68 65 6c 6c 6f>
samcv so it looks like it's a uint8 array
but maybe it's not.
b2gills m: utf16.^roles.say 20:07
camelia ((Blob[uint16]) (Positional[T]) (Stringy))
samcv hm ok
silly me looks like it is 16bit 20:08
maybe this needs to be fixed in moarvm then 20:09
b2gills I suspected it might, which is why I didn't look into it much. I have only a cursory understanding of MoarVM stuff. 20:10
It would be nice if you could alias the same memory space as two different layouts, then a lot of interesting binary munging can easily happen in Perl6 20:13
class FooStruct is repr<CStruct> {…}; my FooStruct @a; my @b := @a.view(Buf[uint8]); @a[0].baz = 32; say @b[4]; # 32 20:20
This would make it so that you could do `$fh.write: 'hello'.encode('utf16').view(Buf[uint8])` 20:22
20:26 amatecha___ joined 20:27 amatecha___ left
lucasb m: my $v; say (map { k => $v = $_ }, ^3) 20:29
camelia (k => 0 k => 1 k => 2)
lucasb m: my $v; say (map { k => $v = $_ }, ^3).eager
camelia (k => 2 k => 2 k => 2)
lucasb the same thing I mentioned today before in #perl6 20:31
I ask again, this is a bug right?
hold on. I just found the docs :) 20:32
"It is worth noting that when assigning a Scalar as value of a Pair the value holds the container of the value itself. This means that it is possible to change the value from outside of the Pair itself" 20:33
:-( 20:34
m: my $v; say my @a := (map { k => $v = $_ }, ^3).list; say @a # one last snippet 20:38
camelia (k => 0 k => 1 k => 2)
(k => 2 k => 2 k => 2)
lucasb to me, this is very strange. I wonder what's the rationale...
geekosaur so you can hold a "reference" to a value stored in a Hash and change it directly, I believe. (a Hash is a bucket of Pairs addressed by key) 20:39
you can also thik of a Pair as being a Scalar with an associated key 20:41
b2gills m: my $v; say my @a := (map { k => ($v = $_)<> }, ^3).list; say @a; # decont it
camelia (k => 0 k => 1 k => 2)
(k => 0 k => 1 k => 2)
lucasb it should always be like this then? if the Pair is created with named parameters, then it doesn't work as a alias to the scalar 20:48
20:48 AlexDaniel left
lucasb m: my $v = 10; my $p = Pair.new(key=>'a',value=>$v); say $p; $v = 20; say $p 20:49
camelia a => 10
a => 10
lucasb m: my $v = 10; my $p = Pair.new('a',$v); say $p; $v = 20; say $p
camelia a => 10
a => 20
b2gills m: my $v = 0; my $kv = key => $v; $kv.value = 42; say $v; 20:50
camelia 42
b2gills m: my $v = 0; my $kv = key => $v<>; $kv.value = 42; say $v;
camelia Cannot modify an immutable Int (0)
in block <unit> at <tmp> line 1
lucasb I'm point the discrepancy with Pair.new(key=>'a',value=>$v), in case it's a bug 20:51
m: my $v = 10; my $p = Pair.new(key=>'a',value=>$v); $p.value = 20 20:52
camelia Cannot assign to a readonly variable or a value
in block <unit> at <tmp> line 1
b2gills multi method new(Pair: Mu :$key!, Mu :$value!) { 20:53
20:53 cateye10 joined
b2gills multi method new(Pair: Mu :$key!, Mu :$value! is raw) { 20:53
If it is a bug, I think that may be the only change needed 20:54
20:54 lizmat left 20:55 lizmat joined, p6bannerbot sets mode: +v lizmat 20:56 cateye10 left
lizmat m: my %h = a => 42; for %h { .value = 666 }; dd %h 20:56
camelia Hash %h = {:a(666)}
samcv b2gills: i added support now for writing utf16 to moarvm 20:57
b2gills \O/
samcv with $fh.write: 'foo'.encode('utf16') at least
lizmat that's why you need .value to be a left value
lucasb I'm not disputing the rw-ness of the .value. I'm ok with it 20:58
b2gills I think it is better to think of it as `raw` instead of `rw` 20:59
lucasb also, "abstractly", a hash is a list of pairs
but a Perl 6 hash is not implemented in terms of Perl 6 Pairs, correct? 21:00
m: my $v = 10; my %h = map {$_=>$v}, <a b c>; $v = 20; say %h 21:02
camelia {a => 10, b => 10, c => 10}
lucasb m: my $v = 10; my @a = map {$_=>$v}, <a b c>; $v = 20; say @a
camelia [a => 20 b => 20 c => 20]
lizmat lucasb: it mimics one
geekosaur Ithink the implementatiois different tu it's a bug if you can observe that without invoking nqp 21:03
lizmat m: my %h = a => 42; for %h { .value = 666 }; dd %h # which is why this works
camelia Hash %h = {:a(666)}
geekosaur "I think the implementation is different but"
b2gills I don't think you can observe it even if you invoke nqp
geekosaur tis keyboard does not like typing quickly
21:04 patrickz left
b2gills Yeah that is the problem with keyboards that are based on USB (even laptop keyboards) 21:04
USB uses a poll mechanism, while PS/2 keyboards interrupt the processor. 21:05
geekosaur this is a backup keyboard, I managed to break the other one. it worked much better 21:07
Geth rakudo: 85da7b206f | (Elizabeth Mattijsen)++ | 2 files
At least document the methods that should be supplied

The Positional / Associative roles do not actually enforce the implementation of needed methods, such as AT-POS / AT-KEY. Adding stubs for these methods breaks the setting build, complaining about methods not being implemented which clearly *are* implemented.
I've tried to add the stubs and defer mixing in the role in a BEGIN block in the core_epilogue. Although that compiles ok, the mixed in role is *not* visible in smart-match (probably nqp::istype), causing all sorts of breakage. Alas. Suggestions welcome.
21:10
21:13 daffy95123 joined 21:14 daffy95123 left
timotimo b2gills: have you had a look at CUnion? 21:18
m: use NativeCall; class Coercer is repr('CUnion') { has int64 $.sxtfr; has int32 $.thrtw; has int16 $.sxtn }; Coercer.new(sxftfr => 0xff998877112233).sxtn.say 21:19
camelia 0
timotimo m: use NativeCall; class Coercer is repr('CUnion') { has int64 $.sxtfr; has int32 $.thrtw; has int16 $.sxtn }; Coercer.new(sxftfr => 0xff998877112233).thrtw.say 21:20
camelia 0
timotimo hm?
i wonder if it assigns default values to the other attributes?
m: use NativeCall; class Coercer is repr('CUnion') { has int64 $.sxtfr; has int32 $.thrtw; has int16 $.sxtn }; my $c = Coercer.new(); $c.thrtw = 0x123456789; say $c.perl; 21:21
camelia Cannot modify an immutable Int (0)
in block <unit> at <tmp> line 1
timotimo m: use NativeCall; class Coercer is rw is repr('CUnion') { has int64 $.sxtfr; has int32 $.thrtw; has int16 $.sxtn }; my $c = Coercer.new(); $c.thrtw = 0x123456789; say $c.perl;
camelia Coercer.new(sxtfr => 591751049, thrtw => 591751049, sxtn => 26505)
timotimo OK, so using .new doesn't seem to do it right, but assigning after creation does
we may want to change that
m: use NativeCall; class A is rw is repr('CStruct') { has int16 $.x; has int32 $.y; has int16 $.z; }; class B is rw is repr('CStruct') { has int32 $.a; has int32 $.b }; class Coercer is rw is repr('CUnion') { HAS A $.a; HAS B $.b; }; my $c = Coercer.new(); $c.a.y = 0xffffffff; say $c.perl 21:23
camelia Coercer.new(a => A.new(x => 0, y => -1, z => 0), b => B.new(a => 0, b => -1))
timotimo ah, well.
m: use NativeCall; class A is rw is repr('CStruct') { has int16 $.x; has int32 $.y; has int16 $.z; }; class B is rw is repr('CStruct') { has int32 $.a; has int32 $.b }; class Coercer is rw is repr('CUnion') { HAS A $.a; HAS B $.b; }; my $c = Coercer.new(); $c.a.y = 0x44332211; say $c.perl
camelia Coercer.new(a => A.new(x => 0, y => 1144201745, z => 0), b => B.new(a => 0, b => 1144201745))
timotimo that doesn't seem right
m: use NativeCall; class A is rw is repr('CStruct') { has int16 $.x; has int32 $.y; has int16 $.z; }; class B is rw is repr('CStruct') { has int32 $.a; has int32 $.b }; class Coercer is rw is repr('CUnion') { HAS A $.a; HAS B $.b; }; my $c = Coercer.new(); $c.a.x = 0x4433; $c.a.z = 0x112233; say $c.perl 21:24
camelia Coercer.new(a => A.new(x => 17459, y => 0, z => 8755), b => B.new(a => 17459, b => 0))
b2gills I want to be able to use @[2;2;2] and @[8]
timotimo m: use NativeCall; class Coercer is rw is repr('CUnion') { HAS int8[16] @.a; HAS int16[8] @.b };
camelia 5===SORRY!5=== Error while compiling <tmp>
An exception occurred while parameterizing int8
at <tmp>:1
Exception details:
5===SORRY!5=== Error while compiling <tmp>
int8 cannot be parameterized
at <tmp>:1
------> 3r is rw…
timotimo hah oops 21:25
m: use NativeCall; class Coercer is rw is repr('CUnion') { HAS int8 @.a[16]; HAS int16 @.b[8] };
camelia 5===SORRY!5=== Error while compiling <tmp>
CUnion representation only handles attributes of type:
(u)int8, (u)int16, (u)int32, (u)int64, (u)long, (u)longlong, num32, num64, (s)size_t, bool, Str
and types with representation: CArray, CPoi…
timotimo m: use NativeCall; class Coercer is rw is repr('CUnion') { HAS int8 @.a[16] is CArray; HAS int16 @.b[8] is CArray };
camelia ( no output )
timotimo m: use NativeCall; class Coercer is rw is repr('CUnion') { HAS int8 @.a[16] is CArray; HAS int16 @.b[8] is CArray }; my $c = Coercer.new; $c.b[2] = 0x1122; say $c.perl
camelia Coercer.new(a => NativeCall::Types::CArray[int8].new, b => NativeCall::Types::CArray[int16].new)
timotimo m: use NativeCall; class Coercer is rw is repr('CUnion') { HAS int8 @.a[16] is CArray; HAS int16 @.b[8] is CArray }; my $c = Coercer.new; $c.b[2] = 0x1122; $c.a[$_].fmt("%x").say for ^16 21:26
camelia 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
timotimo damn it
you can still use nativecast to get what you want, but it isn't as seamless
m: use NativeCall; class Coercer is rw is repr('CUnion') { has int8 @.a[16] is CArray; has int16 @.b[8] is CArray }; my $c = Coercer.new; $c.b[2] = 0x1122; $c.a[$_].fmt("%x").say for ^16 21:29
camelia 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
timotimo still nothing, huh.
b2gills my uint64 @a; my uint8 @b := @a; # I'm just saying something like this would be awesome if it worked 21:30
21:32 lucasb left
timotimo mhm 21:33
i mean you can implement a STORE method to do that for you, and use assignment
m: class TransformIt is Positional { method STORE(int8 @other) { say "storing an int8 in here:"; say @other.perl } }; my @foo is TransformIt; my int8 @other = 1, 2, 3, 4; @foo = @other 21:35
camelia storing an int8 in here:
array[int8].new(1, 2, 3, 4)
b2gills If you could tell MoarVM to just use the same memory space (with some caveats) it would be fast as well.
timotimo our regular VMArray won't like that very much, because it is resizable and the memory can actually "move around" inside of its allocated memory (to support quick push/pull shift/unshift)
but native shaped arrays would support that 21:36
however, i don't think binding is the right way to implement that
otherwise you wouldn't get an error if you're passing an int8 @a to a sub that expects an int16 @b
b2gills I don't either, I was going for clarity of intent
timotimo it'd be kind of C-ish that way, but even more happy to just coerce for you
21:37 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel
b2gills my uint64 @a[16]; my uint8 @b[64] := @a.view(uint8); # where view tells MoarVM to reuse the memory. 21:39
Something like that could get us C level speeds for binary manipulations. 21:46
Without the overhead of NativeCall
timotimo i don't think it'd be extremely hard to jit-compile nativecast calls down to something very fast 22:00
so that the vast majority of time spent is accessing the original array and storing it whereever you're putting it
but the "view" idea is already a proposal for the binary manipulation low-level api
b2gills yeah it seemed to me to be in the same vein as what I have thought of (I've had this idea for quite some time) 22:01
timotimo aye, it's not really new 22:04
b2gills I'm just trying to tickle other peoples brains
timotimo there was already at least one proposal for new "pack" APIs, but iirc that was at the user-facing level
b2gills tickle them in the same way that `with` got added 22:05
timotimo would you say TWEAK was different? 22:06
b2gills There have been at least 3 times that I was quiet about something, that later got noticed by someone else
TWEAK wasn't different, but it wasn't me that tickled other peoples brains
I noticed at the time that `.pull-at-least` should be `.pull-at-most`, but I didn't say anything 22:07
timotimo ah, i think i noticed that one at some point
b2gills I thought at the time that `.count-only` should be done by including a role 22:08
timotimo that now became the PredictableIterator?
b2gills yeah, but it could have happened days after the initial addition of `.count-only` instead of months/years later
timotimo right 22:09
22:09 Guest88982 joined
timotimo it's good that you're giving it a try :) 22:09
like, courageously speaking your mind when you notice something odd
b2gills I have anxiety problems that often stop me
timotimo ah, i can sy 22:10
22:10 Guest88982 left
timotimo mpathise with that 22:10
i'm usually fine enough on IRC, but in person that's a different story :)
b2gills I'm not saying that all of my thoughts are gems, but there are already several examples that got added. 22:11
timotimo oh, of course
it's very hard to "not give a shit if my thoughts aren't valuable"
b2gills I would have suggested `PredictableIterator`, but I couldn't come up with a good name for it at the time. So I stayed quiet. 22:12
The anxiety is also why I've never had a job as a programmer. 22:14
timotimo i have enjoyed a few extra servings of impostor syndrome ever since ... i dunno?
a long time, for sure 22:15
i imagine it's just a little similar to what you're mentioning 22:16
22:16 tomku0 joined 22:17 tomku0 left
b2gills Actually it is more of the anxiety of dealing with other people than my qualifications. 22:18
I think I almost got a job soldering, but I didn't pick up the phone either time they called back. 22:19
timotimo ah, OK 22:21
i think i missed an opportunity because i didn't nag hard enough after the interview
22:31 lucasb joined 22:32 p6bannerbot sets mode: +v lucasb
releasable6 Next release in ≈19 hours. 1 blocker. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 23:00
23:29 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke, alien2003_ joined
timotimo haha, why did nobody tell me that the allocations page in the profiler screenshot/-cast i recently posted had "kb" instead of "bytes" %) 23:33
surely it's totally normal that a Scalar is 48 kbytes big!
23:34 lucasb left, alien2003_ left
MasterDuke heh 23:53
guess that's why jnthn is trying to reduce the number created! 23:55