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] |
|
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 |