MasterDuke_ | m: subset uint15 of uint16 where 0 < * <= 32775; my uint15 $b = 1 | 00:41 | |
camelia | Type check failed in assignment to $b; expected uint15 but got Int (1) in block <unit> at <tmp> line 1 |
||
MasterDuke_ | m: subset uint15 of uint16 where 0 < * <= 32775; my uint16 $b = 1; my uint15 $c = $b | 00:42 | |
camelia | Type check failed in assignment to $c; expected uint15 but got Int (1) in block <unit> at <tmp> line 1 |
||
MasterDuke_ | i guess that's all just part of native uints not really working | ||
but i've actually run into it while doing some coding for fun | 00:44 | ||
timotimo | today i learned that you can right-click-copy, right-click-paste partitions across disks in gparted and it'll clone stuff for you, and you can resize it as well directly afterwards | 00:53 | |
MasterDuke_ | sounds convenient | 00:57 | |
Zoffix is having trouble finding good hacking music today :(* | 02:40 | ||
.tell dogbert17 if you're interested. Got a segfault with some of my code; possibly something to do with native typed attributes: zef update; zef install Testo; cd $(mktemp -d); git clone github.com/zoffixznet/perl6-IO-Dir .; git checkout 70f8502; perl6 t/01-operation.t | 03:10 | ||
yoleaux | Zoffix: I'll pass your message to dogbert17. | ||
Zoffix | .tell dogbert17 actually it was trying to read a close dir handle. Filed as: rt.perl.org/Ticket/Display.html?id=131301 | 03:16 | |
yoleaux | 03:11Z <skids> Zoffix: yeah that module is really bitrotten, and won't be worked on again until RT#126819 is resolved. | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126819 | ||
yoleaux | Zoffix: I'll pass your message to dogbert17. | ||
Zoffix | m: say (1,).Seq ~~ (1,).Seq | 03:33 | |
camelia | False | ||
Zoffix | m: say (1,) ~~ (1,) | 03:34 | |
camelia | True | ||
Zoffix | Filed as rt.perl.org/Ticket/Display.html?id=131302 | 03:38 | |
lizmat | Files=1192, Tests=58580, 188 wallclock secs (11.57 usr 4.43 sys + 1092.96 cusr 111.08 csys = 1220.04 CPU) | 05:57 | |
yoleaux | 12 May 2017 22:56Z <Zoffix> lizmat: FWIW the ba0581d75b fix now gives False for cases that are, say `Int ā Int`; Perhaps Set:U.Set should return set(Set) as it does for other type objects? | ||
lizmat | .tell Zoffix well, I guess that boils down to: is Set.Set Set or set(Set) ? | 05:58 | |
yoleaux | lizmat: I'll pass your message to Zoffix. | ||
Geth | rakudo/nom: 407bce1dc2 | (Elizabeth Mattijsen)++ | 13 files Handle QuantHash:U coercion differently This should fix some issues with set operators (RT ##131300). Before this, Set.Set would return Set. Now it returns set(Set). So instead of not coercing a QuantHash type object, we now coerce it into a defined QuantHash object with the type object as its member. This is consistent with e.g. Int.Set, which already coerced to set(Int). |
08:19 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131300 | ||
lizmat | ???????? # just because I can | 08:48 | |
Geth | rakudo/nom: 50d5ac3276 | (Elizabeth Mattijsen)++ | src/core/set_operators.pm Revert "Partial fix for RT #131300" The partial fix was wrong. That should teach me to not commit anything when tired after a long day and an evening out. This reverts commit ba0581d75bdd560ec81c0528f22e574107f05420. |
09:07 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131300 | ||
tadzik | Zoffix: ping | 09:10 | |
ugexe | Zoffix: RakudoPrereq test fails on osx (testers.p6c.org/reports/145831.html needs a few minutes until it shows up) | 09:23 | |
passes on linux however | |||
dogbert17 | m: say 1 ā (SetHash) ?? "present" !! "not present" | 09:38 | |
camelia | not present | ||
dogbert17 | this used to be 'Invocant of method 'Set' must be an object instance of type 'SetHash', not a type object of type 'SetHash'. Did you forget a '.new'?' | ||
ugexe | Zoffix: er, the test report didn't get all the info you would need on the failure. see instead: gist.github.com/ugexe/5d2ced2d4612...d8af89adbd | 09:39 | |
lizmat | m: 1 ā SetHash # golfed | 09:46 | |
camelia | WARNINGS for <tmp>: Useless use of "ā" in expression "1 ā SetHash" in sink context (line 1) |
||
lizmat | m: say 1 ā SetHash # golfed more silently | ||
camelia | False | ||
dogbert17 | cool, so the new behaviour makes sense | 09:49 | |
lizmat | yeah, think so | 09:55 | |
m: dd Set.Set | |||
camelia | set(Set) | ||
lizmat | m: dd set().Set | ||
camelia | set() | ||
[TuxCM] | This is Rakudo version 2017.04.3-238-g50d5ac327 built on MoarVM version 2017.04-64-g6d5ea042 | 10:09 | |
csv-ip5xs 2.493 | |||
test 12.472 | |||
test-t 4.215 - 4.221 | |||
csv-parser 12.756 | |||
dogbert17 | m: say bag(<a a b c a d>) (-) bag(<a a b c c>) == bag(<a d>) # hmm | 10:14 | |
camelia | P6opaque: get_boxed_ref could not unbox for the representation '20' of type Scalar in block <unit> at <tmp> line 1 |
||
AlexDaniel | mch: say bag(<a a b c a d>) (-) bag(<a a b c c>) == bag(<a d>) # hmm | 10:15 | |
committable6 | AlexDaniel, Ā¦2015.12: Ā«TrueĀ» Ā¦HEAD(50d5ac3): Ā«P6opaque: get_boxed_ref could not unbox for the representation '20' of type Scalarā¤ in block <unit> at /tmp/TEGGspRhMN line 1ā¤ Ā«exit code = 1Ā»Ā» | ||
AlexDaniel | bisect: say bag(<a a b c a d>) (-) bag(<a a b c c>) == bag(<a d>) # hmm | ||
bisectable6 | AlexDaniel, Bisecting by exit code (old=2015.12 new=50d5ac3). Old exit code: 0 | ||
AlexDaniel, bisect log: gist.github.com/ea9b1f5cafac02e57b...2d3eb01b8c | |||
AlexDaniel, (2017-05-11) github.com/rakudo/rakudo/commit/78...1a591b1550 | |||
AlexDaniel | commit: 788e6de6dc6^,788e6de6dc6 say bag(<a a b c a d>) (-) bag(<a a b c c>) == bag(<a d>) # hmm | ||
committable6 | AlexDaniel, Ā¦788e6de6dc6^: Ā«TrueĀ» Ā¦788e6de: Ā«P6opaque: get_boxed_ref could not unbox for the representation '20' of type Scalarā¤ in block <unit> at /tmp/AWnAlMSsyj line 1ā¤ Ā«exit code = 1Ā»Ā» | ||
AlexDaniel | dogbert17: ticket it | 10:16 | |
dogbert17 | will do, just my luck that lizmat decided to take a nap, that's was her computer says anyway :-) | ||
guess she wants a ticket as well | 10:17 | ||
AlexDaniel | of course :) | ||
dogbert17 | I was investigating this broken example in the docs: 'bag(<a a b c a d>) (-) bag(<a a b c c>) = bag(<a d>)' | 10:18 | |
AlexDaniel | I wonder what is 20 | ||
jnthn | A representation ID | 10:19 | |
It could be a code-gen bug | |||
But given a load of code is written with nqp:: ops, it's most likely a missing nqp::decont | |||
Not quite sure why it puts the 20 there instead of P6bigint...maybe thinko in the error generation code | 10:20 | ||
Oh, or maybe we only have the ID there | |||
Zoffix | . | 10:21 | |
yoleaux | 05:58Z <lizmat> Zoffix: well, I guess that boils down to: is Set.Set Set or set(Set) ? | ||
Zoffix | tadzik: pong | ||
ugexe: that looks like your Linux Rakudo version is not the same as OSX version | |||
It's kinda ironic the module I made to avoid buggy Rakudos fails tests because it's hitting a Rakudo bug :P | 10:25 | ||
tadzik | Zoffix: I was wondering why does github.com/perl6/modules.perl6.org...ker.pm#L17 return | 10:26 | |
just to not do the GET, or does the return value matter? | 10:27 | ||
ugexe | Zoffix: happens on 2017.04.3 on either system | ||
dogbert17 | AlexDaniel: done, RT #131303 | 10:28 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131303 | ||
Zoffix | ugexe: OK that makes more sense :) Pushed a fix that I'm pretty confident fixes the issue | ||
AlexDaniel | .tell lizmat you may be interested: RT #131303 | 10:29 | |
yoleaux | AlexDaniel: I'll pass your message to lizmat. | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131303 | ||
Zoffix | tadzik: yes, it returns to avoid the GET; since if we were able to fetch the meta in the first place and URL mathes, then it's correct. That return should probably be `return 1`, since we did not fail the meta check. Although its value is currently unused, I usually use the truthy/falsy returns to indicate success/failure even if currently unused: | 10:33 | |
github.com/perl6/modules.perl6.org...ist.pm#L57 | |||
AlexDaniel | .tell samcv hello! I've just noticed that I had this ticket bookmarked for some reason RT #128875. Looks exactly like something you may be interested in :) | 10:34 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=128875 | ||
yoleaux | AlexDaniel: I'll pass your message to samcv. | ||
samcv | hey | ||
yoleaux | 10:34Z <AlexDaniel> samcv: hello! I've just noticed that I had this ticket bookmarked for some reason RT #128875. Looks exactly like something you may be interested in :) | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=128875 | ||
samcv | will look. | ||
Zoffix | m: dd Array.Array | ||
camelia | [Array,] | ||
Zoffix | m: dd Array.List | ||
camelia | (Array,) | ||
AlexDaniel | m: dd Array.list | ||
camelia | (Array,) | ||
samcv | I'm having a problem using NativeCall under Sabyon (gentoo based) it seems to be trying to open a dummy readline lib file | ||
tadzik | Zoffix: alrighty, thanks | 10:35 | |
jnthn | samcv: Maybe it's trying to load a linker script or some such? | ||
samcv | i guess gentoo's libraries are complex | ||
jnthn | (Which won't work well) | ||
samcv | yeah it is jnthn | ||
anyway we can do anything. the file has the name of the actual .so in the text | |||
tadzik | Zoffix: I move things around and exposed problems with dists on the webui in the 'problems' branch, if you want to take a look :) | ||
it moves some stuff from Source.pm to METAChecker as well | 10:36 | ||
jnthn | Yeah, it'll need to be pointed at the real .so instead I guess | ||
samcv | i'm trying to think how this can be solved for gentoo type distros | ||
other than manually doing it | |||
Zoffix | .tell lizmat I think Set.Set makes sense to be set(Set) because we do that already for List.List, Array.Array, Bag.Bag, and Mix.Mix; I think that's all the things that can contain themselves (all by themselves)? So basically there *is* a meaning for the coercer to return a proper Set I can call methods on, so it makes sense to do that instead of just returning the type object that makes stuff hang and | 10:38 | |
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
jnthn | Manually being looking in the file and then hardcoding that? | ||
Zoffix | can't call many methods on | ||
.tell lizmat can't call many methods on | |||
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
jnthn | I guess linker scripts are text files so we could "interpret" simple ones... | ||
Though that may be icky :) | 10:39 | ||
samcv | yeah i mean. i will check into it. the files i've seen have a refernce to the real .so in the thing | 10:40 | |
h/o gotta bring my website back up :o | 10:42 | ||
Zoffix | tadzik: TIP. Add the new routes you added to site tips; so people know about them. The tips are 1-per-line, and you have to escape your markup, if needed: github.com/perl6/modules.perl6.org...e-tips.txt | 10:43 | |
tadzik | oh, right :) | ||
jnthn | Yeah, afaiu linker scripts can do all kinds of magic but we probably only need to handle a tiny subset of it to be useful | ||
ugexe | Zoffix: confirmed it works on osx now | 10:50 | |
samcv | brb gonna reboot the server... | ||
eek. no wonder. my ipv6 addresses aren't showing up anymore.. | 10:52 | ||
nginx wouldn't start | |||
jnthn, this is the libreadline.so file fyi cry.nu/p/m1c1/ | 10:59 | ||
so looks like GROUP has .so's and there can be more than one. but if we find that section it should be at least not too hard to do it. | 11:03 | ||
AlexDaniel | dogbert17: as you can see, she is not asleep :) | 11:05 | |
dogbert17 | lizmat: we found a bug for you :) | 11:07 | |
ah, now I got the mail with her comment | 11:09 | ||
samcv | AlexDaniel, RE that RT .o0( i always thought the code for :i:m in nqp looked like it didn't work... hehe ) | 11:10 | |
dogbert17 | at least the broken examples on the SetBagMix page have been fixed | ||
samcv | hadn't poked that section yet | ||
put it on my list to categorize tomorrow | 11:11 | ||
AlexDaniel | \o/ | ||
dogbert17 | the amount of code examples on the SetBagMix page is quite limited, perhaps I should add a few | 11:13 | |
dogbert17 decides to do that after lunch | 11:15 | ||
Geth | rakudo/nom: 4c813666df | (Elizabeth Mattijsen)++ | 2 files Actually decontainerize when changing (Bag|Mix)Hash This fixes RT #131303, dogbert17++ for spotting |
11:26 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131303 | ||
dogbert17 | lizmat++ | 11:40 | |
lizmat | so how do we do this in Perl 6: | 12:17 | |
yoleaux | 10:29Z <AlexDaniel> lizmat: you may be interested: RT #131303 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131303 | ||
yoleaux | 10:38Z <Zoffix> lizmat: I think Set.Set makes sense to be set(Set) because we do that already for List.List, Array.Array, Bag.Bag, and Mix.Mix; I think that's all the things that can contain themselves (all by themselves)? So basically there *is* a meaning for the coercer to return a proper Set I can call methods on, so it makes sense to do that instead of just returning the type object that makes stuff hang and | ||
10:38Z <Zoffix> lizmat: can't call many methods on | |||
lizmat | m: require Test; ok 1 | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared routine: ok used at line 1 |
||
lizmat | m: require Test; ::("ok") 1 | 12:18 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3require Test; ::("ok")7ā5 1 expecting any of: infix infix stopper statement end statement modifier sā¦ |
||
Zoffix | m: require Test <&ok>; ok 1 | ||
camelia | ok 1 - | ||
lizmat | ah | ||
ok | |||
Zoffix++ | |||
m: require Test; ::("ok")(1) | 12:19 | ||
camelia | No such symbol 'ok' in block <unit> at <tmp> line 1 Actually thrown at: WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was: ā¦ |
||
lizmat | m: require Test; ::("&ok")(1) | 12:20 | |
camelia | No such symbol '&ok' in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
lizmat | just checking :-) | ||
Zoffix | m: require Test; ::("Test::EXPORT::DEFAULT::&ok")(1) | 12:22 | |
camelia | ok 1 - | ||
Zoffix | m: require Test; Test::EXPORT::DEFAULT::ok(1) | 12:23 | |
camelia | ok 1 - | ||
Zoffix | ZOFVM: Files=1242, Tests=135556, 113 wallclock secs (22.47 usr 3.20 sys + 2355.60 cusr 131.13 csys = 2512.40 CPU) | 13:16 | |
Geth | rakudo/nom: aa72bdefe4 | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Remove dir's :absolute and :Str; make up to 23% faster - Remove `:absolute` argument and control absoluteness fully via invocant - Remove `:Str` argument; a performance hack is sole reason for this arg - Anyone in dire need of it can use IO::Dir module - Neither arg is roasted, documented, or appears to be ecosystem-used - Fix JVM bug of not accounting invocant's absoluteness when creating ... (7 more lines) |
13:17 | |
roast: 98917dcaeb | (Zoffix Znet)++ | S32-io/dir.t [io grant] Test IO::Path.dir's absoluteness behaviour Per impl in github.com/rakudo/rakudo/commit/aa72bdefe4 |
13:18 | ||
pink_mist | [Tux]: are you HMBRAND on cpan? your Text-CSV release was caught by at least 2 different perl5 monitoring solutions as a perl5 dist :/ | 13:55 | |
[Tux]: it seems you missed putting things in the Perl 6 directory, if I'm not misunderstanding various comments from others (I've no idea myself) | 14:00 | ||
tadzik | pink_mist: fwiw, I did the same for Acme::Meow, and it was kinda intentional, and andk-approved to see if pause will react correctly or not | 14:01 | |
nine | pink_mist: it really was a test of how PAUSE would react, because it's supposed to handle Perl 6 dists correctly. ANDYK approved of the test and is currently fixing PAUSE | ||
s/ANDYK/ANDK/g | 14:02 | ||
Zoffix | Yeah, in PAUSE you need to choose "Perl 6" in target directory from the dropdown | ||
pink_mist | aha, got it | ||
Geth | nqp: a695300ae9 | (Elizabeth Mattijsen)++ | src/HLL/Compiler.nqp Revert "Allow for extra config info to be shown from HLL" We should change the subclass Perl6::Compiler, rather than mess with HLL::Compiler. This reverts commit 736835d80aff12494991137564a966d1c3dd456c. |
14:05 | |
lizmat | Zoffix pink_mist I disagree | 14:06 | |
PAUSE *should* put a Perl 6 distro in the Perl6 directory automatically | |||
otherwise we allow the user of PAUSE to do the wrong thing | 14:07 | ||
Zoffix | lizmat: yeah, if it can. I was describing the current process as I last used it. | 14:08 | |
Anyone really good with bit shift stuff? Can you check if we have some problems with bitshifting uint32 types? There's this issue, but I can't repro any concrete problems: github.com/grondilu/libdigest-perl6/issues/18 | 14:09 | ||
Ah, a spesh bug | 14:19 | ||
MasterDuke_ | huh, wasn't that a recent breakage for libdigest? i didn't think spesh was touched recently? | 14:23 | |
Zoffix | Filed as rt.perl.org/Ticket/Display.html?id=131306 | 14:27 | |
MasterDuke_: it wasn't but rakudo changes exposed it | |||
MasterDuke_ | ah, i just read the issue thread | 14:31 | |
timotimo | uh oh, spesh does bit ops wrong? | 14:34 | |
is it really spesh, or just jit? | 14:35 | ||
Zoffix | timotimo: no idea. I don't know the difference | 14:40 | |
MVM_SPESH_DISABLE=1 fixes the bug | |||
timotimo | and MVM_JIT_DISABLE=1? | 14:41 | |
because disabling spesh also disables the jit | |||
Zoffix | MVM_JIT_DISABLE=1 still has the bug | 14:45 | |
c: ef29bb9f41aa5d~1 use nqp; sub rotr(uint32 $n, uint32 $b) { nqp::bitshiftr_I(nqp::decont($n), nqp::unbox_i($b), Int) +| $n +< (32 - $b) }; say rotr 1652322944, 18; my $x; for ^1000 { $x = rotr 1652322944, 18 }; say $x | 14:48 | ||
committable6 | Zoffix, Ā¦ef29bb9f41aa5d~1: Ā«27071659120799ā¤27071659120799Ā» | ||
Zoffix | And looks like it's solely the NEW moarvm right shift off that caused it, 'cause if I do the Rakudo's fix above the bug isn't there (when using old MoarVM op) | 14:49 | |
s/off/op/; | |||
This one: github.com/MoarVM/MoarVM/commit/36...785187ddfe | 14:50 | ||
Geth | rakudo/nom: cbff7110eb | (Elizabeth Mattijsen)++ | 2 files Change Perl6::Compiler rather than HLL::Compiler This bumbs NQP_REVISION to make sure we get the original, unadulterated HLL::Compiler.verbose-config method. |
14:51 | |
rakudo/nom: 83b7acd265 | (Elizabeth Mattijsen)++ | src/core/Compiler.pm Run the Perl6::Compiler.verbose-config when sinking Providing a runtime way to trigger "perl6 -V" output. This probably needs some bikeshedding still. |
|||
Zoffix | Actually, no. If I checkout pre-fix MoarVM, it still has that bug :S | 14:56 | |
timotimo | spesh doesn't actually do anything to bitshift ops | ||
is the bug still there when you set only MVM_SPESH_INLINE_DISABLE? | 14:58 | ||
which number is the wrong one, now? one that ends in 6? | 14:59 | ||
Zoffix | c: ef29bb9f41aa5d~1 say $*VM.version; use nqp; sub rotr(uint32 $n, uint32 $b) { nqp::bitshiftr_I(nqp::decont($n), nqp::unbox_i($b), Int) +| $n +< (32 - $b) }; say rotr 1652322944, 18; my $x; for ^1000 { $x = rotr 1652322944, 18 }; say $x | ||
MasterDuke_ | no bug with INLINE_DISABLE | ||
committable6 | Zoffix, Ā¦ef29bb9f41aa5d~1: Ā«v2017.04.56.g.8.ad.18.b.84ā¤27071659120799ā¤27071659120799Ā» | ||
Zoffix | timotimo: yeah, the short one | 15:00 | |
Right answer is 27071659120799 | |||
ok, so ^ no bug there, but if I build 2017.04 MoarVM, I get the bug | |||
I suspect this might be some nqp changes... | |||
c: ef29bb9f41aa5d say $*VM.version; use nqp; sub rotr(uint32 $n, uint32 $b) { nqp::bitshiftr_I(nqp::decont($n), nqp::unbox_i($b), Int) +| $n +< (32 - $b) }; say rotr 1652322944, 18; my $x; for ^1000 { $x = rotr 1652322944, 18 }; say $x | |||
committable6 | Zoffix, Ā¦ef29bb9: Ā«v2017.04.56.g.8.ad.18.b.84ā¤27071659120799ā¤27071659120799Ā» | ||
Zoffix | uhhhh | 15:01 | |
timotimo | well, if it's a spesh bug it will only appear if you run the code multiple times | ||
Zoffix | bisect: use nqp; sub rotr(uint32 $n, uint32 $b) { nqp::bitshiftr_I(nqp::decont($n), nqp::unbox_i($b), Int) +| $n +< (32 - $b) }; say rotr 1652322944, 18; my $x; for ^1000 { $x = rotr 1652322944, 18 }; say $x | ||
bisectable6 | Zoffix, Bisecting by output (old=2015.12 new=83b7acd) because on both starting points the exit code is 0 | ||
Zoffix | I am. I'm running it 1000 times | ||
timotimo | oh | ||
bisectable6 | Zoffix, bisect log: gist.github.com/0f933bff181e59e9c9...37e7cdd436 | ||
Zoffix, (2017-05-10) github.com/rakudo/rakudo/commit/64...68243f0115 | |||
timotimo | there is | ||
right | |||
Zoffix | Oh, I was looking at the wrong op all this time | ||
brb | 15:02 | ||
Check it: | 15:08 | ||
m: use nqp; sub rotr(uint32 $n, uint32 $b) { nqp::bitshiftr_I(nqp::decont($n), nqp::unbox_i($b), Int) +| $n +< (32 - $b) }; say rotr 1652322944, 18; my $x; for ^1000 { $x = rotr 1652322944, 18 }; say $x | |||
camelia | 27071659120799 235679 |
||
Zoffix | Bug, eh? | ||
m: use fatal; use nqp; sub rotr(uint32 $n, uint32 $b) { nqp::bitshiftr_I(nqp::decont($n), nqp::unbox_i($b), Int) +| $n +< (32 - $b) }; say rotr 1652322944, 18; my $x; for ^1000 { $x = rotr 1652322944, 18 }; say $x | |||
camelia | 27071659120799 27071659120799 |
||
Zoffix | No bug :) | ||
timotimo | fixed your readdir crash bug just now btw | 15:09 | |
Zoffix | sweet | 15:10 | |
timotimo grabs all latest nqp and rakudo | 15:13 | ||
Zoffix tries to refocus on IO | 15:14 | ||
Geth | roast: 00f6420096 | (Zoffix Znet)++ | S32-io/io-handle.t Spec value of IO::Handle.encoding on unopened handle |
15:25 | |
Zoffix | ZofBot: sing it with me \o\ |o| /o/ www.youtube.com/watch?v=0GMFT9Dph8M | 15:57 | |
ZofBot | Zoffix, (Contextual variable searches do; $*PID will eventually locate $PROCESS::PID if not hidden by an inner callframe's $*PID | ||
tadzik | ...wat | 16:05 | |
Geth | roast: 71eebc77f3 | (Zoffix Znet)++ | S32-io/io-spec-unix.t [io grant] Test IO::Spec::Unix.extension |
16:12 | |
Zoffix | m: $PROCESS::PID = 42; sub foo { say $*PID }; foo; { my $*PID = 72; foo } | 16:15 | |
camelia | 42 72 |
||
Zoffix | Beat my head for a bit about this: | 16:16 | |
m: $PROCESS::PID = 42; sub foo { say $*PID }; foo; my $*PID = 72; foo | |||
camelia | (Any) 72 |
||
Zoffix | wonder if it's a DITWIDT or should warn | ||
TimToady | .oO(twinges? tickles? twerks?) |
16:21 | |
Zoffix | :) | 16:25 | |
dogbert17 | TimToady: did your cap repair succeed or did you (F)ry everything? | 16:28 | |
lizmat | Zoffix: feels wrong to me | 16:31 | |
Zoffix | m: my $x = 72; { sub foo { say $x }; foo ; my $x = 42; say $x } | 16:35 | |
camelia | (Any) 42 |
||
Zoffix | Affects this case too | ||
TimToady | should probably get the "already bound to outer symbol" warning | 16:37 | |
m: my $x = 72; { say $x; my $x = 42; say $x } | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Lexical symbol '$x' is already bound to an outer symbol; the implicit outer binding must be rewritten as OUTER::<$x> before you can unambiguously declare a new '$x' in this scope at <tmp>:1 ------>ā¦ |
||
TimToady | like that one | 16:38 | |
dogbert17: got the 5v line work, but the 12v line is still like 9Ā±3v, so thinking I need to replace the main cap too | 16:39 | ||
*working | |||
Zoffix | Filed as rt.perl.org/Ticket/Display.html?id=131307 | 16:41 | |
dogbert17 | TimToady: I guess you have an ESR meter | 16:42 | |
TimToady | well, I can just watch it finding random voltages for a while :) | 16:43 | |
anyway, it seems like too much AC is leaking through somehow | 16:44 | ||
Geth | rakudo/nom: 85230d0603 | (Elizabeth Mattijsen)++ | 3 files Streamline verbose configuration reporting - perl -V now sorts its output - moved all of the logic for -V to Perl 6 land - new Compiler.verbose-config method returns hash by default - will nqp::say it when passed a :say - removes the $*SAY-ADDITIONAL-CONFIG-INFO abomination - and the Compiler.new.sink abomination |
16:45 | |
dogbert17 | caps are not very good at stopping AC though :) | 16:46 | |
AlexDaniel | āPiping several commands is easyā our docs say. Except when you forget to .close the pipe between your processes | 17:01 | |
lizmat | dinner& | 17:02 | |
AlexDaniel | what do you think? Is it my misunderstanding, or is it a bug? github.com/perl6/whateverable/commit/96ccddccd | ||
Zoffix | Is there a way for it to auto-detect when to close a pipe? | 17:03 | |
AlexDaniel | well, if the process over, sure enough it's time to close it? I'm not sure how it works internally | 17:04 | |
geekosaur | if the process is over there can still be unread data. in general you can make things that autoclose so simple cases are simpler, but you end up making complex cases impossible | 17:14 | |
sufficiently clever compile time analysis could say "you have a dangling pipe end you never do anything with, did you forget to either close it or use it?" | 17:15 | ||
...usually. | |||
oh, this is one you use, you read, yopu just forgot to close? (looking at commit msg in other channel) | 17:16 | ||
that one is a bit more annoying, but one could probably set a flag on the handle at creation time saying "autoclose after EOF is read"... provided you aren't on an old system where it's not possible to distinguish nonblocking read with no data from EOF | 17:17 | ||
but I don't think rakudo can be built on such systems | 17:18 | ||
(for historical reasons I think POSIX still allows that though...) | |||
Zoffix | man this WannaCry thing is crazy gist.github.com/rain-1/989428fa550...6efbc0b168 | ||
Zoffix wonders if he'll still have work to go to on Tuesday :) | 17:19 | ||
AlexDaniel | I'm still waiting for this kind of thing for linux | 17:29 | |
get your files encrypted, run around in panic trying to find your backups, search the internet for a way to decrypt it without paying anythingā¦ sounds like a lot of fun :) | 17:30 | ||
Zoffix | AlexDaniel: I'm sure there'll be some when it's market share will be more than a pimple on a flee | 17:31 | |
AlexDaniel | Zoffix: well yes, maybe, butā¦ | 17:32 | |
nine | Actually there already are ones for Linux. Or at least one. But it demands a ridiculously high sum because Linux users seem to have the money. | ||
AlexDaniel | if you manage to infect something, what are the chances that it is some server? | ||
Zoffix | I dunno, pretty good? | 17:33 | |
AlexDaniel | nine: what's the name? | ||
Zoffix | HeartBlead anyone? It doesn't need to be an infection | ||
nine | AlexDaniel: sorry, don't know anymore | ||
AlexDaniel | maybe en.wikipedia.org/wiki/Linux.Encoder.1 | ||
Zoffix | And really, this is more about people using ancient, unsupported software than anything else. | 17:34 | |
My home box isn't affected, but 3 other Windows boxes I checked even had Windows updates turned off and didn't receive anything since 2015 -_- | |||
Hm, IO::Handle.flush is untested... wonder how I'm supposed to test it :/ Since IIRC we don't currenly buffer anything? | 17:40 | ||
guess I'll see what sort of thing Perl 5 buffers and do a test to cover that case and when we start buffering we'll write more tests. | 17:41 | ||
geekosaur | used to be everything by the same rules as C (so you will find older programs setting $| for sockets); eventually sockets started defaulting nonbuffered because buffering is almost always wrong | 17:46 | |
that said I was under the impression that buffering is transparently managed by libuv (and currently there is no mechanism in either moarvm or rakudo to change it) | 17:47 | ||
Zoffix | oh | ||
there's IO::Handle.flush that uses nqp::flushfh op | |||
I think I'll go the other way and un-document it and leave it unspecced... | 17:48 | ||
geekosaur | yeh, I think that call is the sole interface to libuv buffering | ||
you can't do the equivalent of C's setvbuf :/ | 17:49 | ||
(and NativeCall does not help as it does not tell *libuv* what to do) | |||
Zoffix | ZOFFLOP: t/spec/S11-modules/nested.t | 18:10 | |
Geth | rakudo/nom: b43ed18f50 | (Zoffix Znet)++ | 2 files [io grant] Make IO::Handle.flush fail with typed exceptions |
||
roast: 4495615281 | (Zoffix Znet)++ | S32-io/io-handle.t [io grant] Test IO::Handle.flush |
18:11 | ||
Zoffix | m: .skip xx 10000 and .head.say with grep *.is-prime, ^ā | 18:23 | |
camelia | Method 'pull-one' must be implemented by Iterator because it is required by roles: Iterator. in block at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
BenGoldberg | One reason why it's not possible (in the general case) to know when to automatically close a pipe is that the process might have spawned a child of it's own, and that grandchild process might have a copy of the read end of the pipe. | 18:29 | |
AlexDaniel | BenGoldberg: you mean the write end? | 18:31 | |
or hmā¦ | |||
???? | |||
well, all I know is that my code was broken, and I see no easy way to prevent myself from doing the same mistake again | 18:32 | ||
I'm stupid, I know, but you probably can't fix thatā¦ | |||
I have created a doc issue to make the situation a bit better: github.com/perl6/doc/issues/1304 | 18:33 | ||
but documenting the trap doesn't really solve the problemā¦ | |||
???? | |||
Zoffix | Well... programmers do need do a bit of thinking. We can't eliminate it entirely :) | 18:34 | |
You work with IO::Handles; it's your job to ensure to close them, if relying on GC taking care of that isn't an option | 18:35 | ||
ZofBot: blame the user for everything! | 18:37 | ||
ZofBot | Zoffix, and shouldn't add short method to Mu | ||
geekosaur suggests 'perldoc perlipc'. some things CANNOT be fixed in the language. the programmer must deal; the computer will never be able to do so | 18:38 | ||
not via the language, not via the OS, not via magical fairies | |||
IPC is rife with these | 18:39 | ||
AlexDaniel cries in the corner | |||
Zoffix wonders when the traps page will be large enough to be published as a standalone book :) | 18:44 | ||
ZOFVM: Files=1242, Tests=135559, 114 wallclock secs (22.22 usr 3.20 sys + 2379.55 cusr 126.34 csys = 2531.31 CPU) | |||
AlexDaniel | Zoffix: I don't see many contributions to it | ||
it's just me creating issuesā¦ | |||
Zoffix | I added constants precompilation recently to it | 18:48 | |
AlexDaniel | \o/ | 18:49 | |
is this one outdated? docs.perl6.org/language/traps#BUIL..._arguments | 18:51 | ||
because you can do TWEAK now | |||
Zoffix | probably | 18:52 | |
s/probably/definitely/; | |||
dammit | 18:54 | ||
I copied that link while I had a CD key for a game in my copypaste buffer and I need it now and I've no idea how to make steam tell it to me again, 'cause I said "don't show again" :( | 18:55 | ||
AlexDaniel | sorry! | ||
no clipboard manager? | |||
Zoffix | Ah, there's "CD KEY" link on the game's page | ||
Clipboard manager? | |||
Never heard of 'em. Also, this is windows | 18:56 | ||
MasterDuke_ | Zoffix: there are 3rd-party clipboard managers for windows | 18:57 | |
BenGoldberg | Windows managers exist for windows: ClipboardFusion, Ditto, ClipCube, Ethervane Echo, ShapeShifter, Save.me, ... | ||
Just a random few :) | |||
AlexDaniel | interestingly, I never needed oneā¦ but I also don't have a trash bin :) | 18:59 | |
(you press Delete and poof! The file is gone) | |||
Zoffix reads 6guts.wordpress.com/2017/05/12/loo...t-funding/ | 19:16 | ||
And I recall snide replies to AlexDaniel on bdfoy's grant, about there being tons of money at TPF and everyone should just apply :/ | 19:17 | ||
moritz | speaking of that project, was there a schedule for it? | 19:28 | |
Zoffix | moritz: there were, but it wasn't funded | ||
moritz | Zoffix: ah right, I actually meant the kickstarter | 19:29 | |
Zoffix | I vaguelly recall summer being somewhere around the time, but I don't see any specific timelines on the Kickstarter page | ||
Ah, "Final e-version: "ESTIMATED DELIVERY | 19:30 | ||
Jun 2017 | |||
"Print book only, fulfilled by O'Reilly: Jun 2017" | 19:31 | ||
And looking at April's working copy of the book, I'd say Jun is overly optimistic; maybe Sept or so | 19:33 | ||
ugh. wish I didn't look at it | |||
try { chdir $*SPEC.catfile( $*HOME, @*ARGS[0] ) } | |||
if $! { put $! } | |||
MasterDuke_ | m: say \(1) ~~ :(Str(Int)) | 19:34 | |
camelia | True | ||
MasterDuke_ | m: say \(1) ~~ :(Str(int)) | ||
camelia | False | ||
Zoffix | And several other convoluted examples with dumb handling of Failures | 19:35 | |
AlexDaniel | nah, it's ok, looks fine here | 19:36 | |
AlexDaniel doesn't have the access | |||
MasterDuke_ | m: say \(1) ~~ :(Int(int)) | ||
camelia | False | ||
MasterDuke_ | m: say \(1) ~~ :(Int(Int)) | ||
camelia | True | ||
MasterDuke_ | m: say \(1) ~~ :(int(int)) | ||
camelia | False | ||
MasterDuke_ | m: say \(1) ~~ :(int(Int)) | ||
camelia | False | ||
Zoffix | AlexDaniel: no regular user code should have a $*SPEC in it | 19:37 | |
timotimo wonders if nier: automata's soundtrack is good for coding | |||
AlexDaniel | Zoffix: what code? No code! | ||
Zoffix | AlexDaniel: the one I pasted above | ||
timotimo | Zoffix: failures r rly hard | ||
MasterDuke_ | m: say \(1) ~~ :(int) | ||
camelia | True | ||
MasterDuke_ | m: say \(1) ~~ :(Int) | 19:38 | |
camelia | True | ||
Zoffix | In fact, catfile doesn't handle nul bytes, so unless chdir coerces to IO path somewhere along the way that code has a security bug in it | ||
s: &chdir | |||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/b43e...rs.pm#L134 | ||
Zoffix | s: $*CWD, 'chdir', \('foo') | 19:39 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/b43e...th.pm#L414 | ||
Zoffix | Nah, it's fine. | ||
timotimo | is $*SPEC tested explicitly in roast? | 19:42 | |
Zoffix | Oh yeah | ||
timotimo | mhm | ||
we don't really tell people that $*SPEC isn't meant for user code | 19:43 | ||
or do we? | |||
Zoffix | But it's all low-level bits, so unless you're writing your own IO module, you shouldn't use it. | ||
We didn't, but do now. | |||
Well, and all pre-IO-grant IO docs were kinda meh and sparse and I think used $*SPEC too. I'm still working on improving them but the end goal is to have $*SPEC only as a "you're making your own IO lib" thing and everything else is handled by IO::Path | 19:44 | ||
One exception is splitting/joining path into/from path bits. You can join with just .join('/') and IO::Path will do the right thing with it, but it's still kinda iffy and splitting... *shrug*. I've seen one usage of that in the ecosystem, but I don't know what the actual problem being solved was. It might've been solvable by just calling the .add method instead of splitting/joining | 19:46 | ||
ugexe | splitting paths is often used to find some common substring/path-part between X number of paths | 19:49 | |
Zoffix | What for? | 19:55 | |
ugexe | usually to keep some relative path structure while extending its parent some number of levels with the common prefix | 20:04 | |
i used to do it when we had to handle blib/lib and lib | |||
except it could be anything, just neccesarily blib | 20:06 | ||
just not^ | |||
pmurias | /&foo/ should be illegal? | 21:00 | |
Geth | nqp/master: 4 commits pushed by pmurias++ | 21:02 | |
rakudo/nom: 4298dd5e2c | (Stefan Seifert)++ | tools/install-dist.pl Support building the dist in install-dist.pl |
21:05 | ||
pmurias | not sure if I should make / & a & a/ throw an error or get rid of the todo test for that | 21:11 | |
jnthn | m: / & a & a/ | 21:14 | |
camelia | ( no output ) | ||
jnthn | m: say 'a' ~~ / & a & a/ | ||
camelia | Nil | ||
jnthn | m: say 'a' ~~ / a & a/ | ||
camelia | Nil | ||
jnthn | m: say 'a' ~~ / a && a/ | ||
camelia | ļ½¢aļ½£ | ||
jnthn | m: say 'a' ~~ /&& a && a/ | ||
camelia | ļ½¢aļ½£ | ||
jnthn | Hm, curious | ||
/&a&a/ is pretty odd, in that the first & falls under the same rule that lets you put a lone | before an alternation in order to let things line up nicely | 21:15 | ||
But that only is allowed at the start of a group (or top level) | |||
And I susepct the &b later is swallowed up by the variable rule since it's a longer token | 21:16 | ||
(And there isn't an LTM competition at the start, thus why the first & is handled the way it is) | |||
I thougth that & compiled the same as && though, so not sure why the difference | |||
pmurias | jnthn: so /& a & a/ should be legal and works as /a & a/? | 21:24 | |
jnthn | pmurias: I believe so, yes | 21:26 | |
The grammar intentionally, iirc, matches a lone |, ||, &, and && at the start of a statement | 21:27 | ||
pmurias | m: say('a' ~~ / a && a /) | 21:28 | |
camelia | ļ½¢aļ½£ | ||
pmurias | m: say('a' ~~ / a & a /) | ||
camelia | Nil | ||
pmurias | nqp-m: say('a' ~~ / a & a /) | ||
camelia | a | ||
ugexe | buffer 2 | 21:31 | |
Geth | nqp: a5f1b80080 | pmurias++ | 5 files Remove TODO regex test A null regex to the left of & seems to be legal. |
21:32 | |
dogbert17 | does anyone know what nqp::setelems does? | 22:05 | |
AlexDaniel | dogbert17: you mean, besides this? github.com/perl6/nqp/blob/master/d...n#setelems | 22:07 | |
timotimo | well, i can point you to the code inside moarvm | 22:09 | |
dogbert17 | AlexDaniel++, I was thinking of documenting Buf.reallocate which looks like this 'method reallocate(Buf:D: Int $elements) { nqp::setelems(self,$elements) }' | 22:10 | |
timotimo | VMArray.c:448 and MultiDimArray.c:698 | ||
(and buf is a VMArray on the inside) | |||
dogbert17 | timotimo: thx, is it then safe to assume that if the VMArray is enlarged, the 'new' elements are set to zero? | 22:11 | |
timotimo | should be, yeah | ||
hm | 22:12 | ||
arrays can have a type for the slots | |||
somehow "is default" has to work | |||
i guess it's set to null so that existspos returns 0 for that part? | |||
dogbert17 | interesting | 22:13 | |
I'll cobble something together which you can rip to shreds later :) | 22:14 | ||
timotimo | documentation's fine | ||
one important thing to know about moarvm's dynamic arrays is that they don't shrink, ever. | 22:16 | ||
dogbert17 | so what happens to the seemingly freed space then? | 22:20 | |
timotimo | it's just memory that can be re-used at any point by adding more entries to the array | 22:21 | |
dogbert17 | is there a way to clear the Buf, i.e. set all elements to a defult value, e.g. zero | 22:24 | |
timotimo | yeah, setelems to 0 and back | ||
dogbert17 | but then we're in nqp land aren't we? | 22:25 | |
m: my $buf = Buf.new([1, 2, 3, 4, 5]); say $buf; $buf.reallocate(3); $buf.reallocate(6); say $buf; | 22:27 | ||
camelia | Buf:0x<01 02 03 04 05> Buf:0x<01 02 03 04 05 00> |
||
timotimo | then just assign Empty | ||
dogbert17 | my $buf = Buf.new([1, 2, 3, 4, 5]); say $buf; $buf = Empty; say $buf.WHAT; # obviously not like this | 22:29 | |
m: my $buf = Buf.new([1, 2, 3, 4, 5]); say $buf; $buf = Empty; say $buf.WHAT; # obviously not like this | |||
camelia | Buf:0x<01 02 03 04 05> (Slip) |
||
timotimo | haha | 22:32 | |
no, it has to be an array assignment | |||
m: my $buf = Buf.new([1, 2, 3, 4, 5]); say $buf; @$buf = Empty; say $buf.perl | |||
camelia | Buf:0x<01 02 03 04 05> Cannot modify an immutable Seq in block <unit> at <tmp> line 1 |
||
MasterDuke_ | that looks like the ghost array behavior from a couple days ago | ||
timotimo | oh, oops | ||
that's not how i expected tthat | 22:33 | ||
m: my @buf := Buf.new([1, 2, 3, 4, 5]); say @buf; @buf = Empty; say @buf.perl | |||
camelia | Buf:0x<01 02 03 04 05> Cannot modify an immutable Buf in block <unit> at <tmp> line 1 |
||
MasterDuke_ | wouldn't you expect that reallocating down and then back up would put 0s? | ||
timotimo | i don't understand what i'm doing wrong there | ||
m: say (@(Buf.new(1, 2, 3, 4)) = Empty) | 22:34 | ||
camelia | Cannot modify an immutable Seq in block <unit> at <tmp> line 1 |
||
MasterDuke_ | nqp: my @a := nqp::list_i(0, 2, 4, 6); nqp::setelems(@a, 2); for @a { say($_) }; say("reset @a"); nqp::setelems(@a, 4); for @a { say($_) } | 22:41 | |
camelia | 0 2 reset @a 0 2 4 6 |
||
MasterDuke_ | what was it that was just fixed? | 22:42 | |
dogbert17 | 2016.12 behaves the same | 22:44 | |
MasterDuke_ | m: my @a = ^4; @a.pop; @a[5] = 99; say @a | 22:45 | |
camelia | [0 1 2 (Any) (Any) 99] | ||
MasterDuke_ | c: 2017.04 my @a = ^4; @a.pop; @a[5] = 99; say @a | ||
committable6 | MasterDuke_, Ā¦2017.04: Ā«[0 1 2 3 (Any) 99]Ā» | ||
MasterDuke_ | ah, that was it | ||
ok. so is is expected that nqp::setelems keeps values around? | 22:48 | ||
timotimo | that is kind of bad | 22:49 | |
could crash when GC has happened in between making it small and making it big | |||
nqp: my @a := nqp::list_i(0, 2, 4, 6); nqp::setelems(@a, 2); for @a { say($_) }; say("reset @a"); nqp::force_gc(); nqp::setelems(@a, 4); for @a { say($_) } | 22:50 | ||
camelia | 0 2 reset @a 0 2 4 6 |
||
timotimo | oh, list_i | ||
that doesn't have that problem, of course | |||
nqp: my @a := nqp::list(0, 2, 4, 6); nqp::setelems(@a, 2); for @a { say($_) }; say("reset @a"); nqp::force_gc(); nqp::setelems(@a, 4); for @a { say($_) } | 22:51 | ||
camelia | 0 2 reset @a 0 2 4 6 |
||
MasterDuke_ | set_elems() does call set_size_internal(), which in turn does call zero_slots() | ||
timotimo | why doesn't that crash? | ||
nqp: my @a := nqp::list(0, 2, 4, 6); nqp::setelems(@a, 2); for @a { say($_) }; say("reset @a"); nqp::force_gc(); nqp::force_gc(); nqp::setelems(@a, 4); for @a { say($_) } | 22:52 | ||
camelia | 0 2 reset @a 0 2 4 6 |
||
MasterDuke_ | why would it? | ||
nqp: my @a := nqp::list(); nqp::setelems(@a, 2); for @a { say($_) }; | 22:53 | ||
camelia | |||
MasterDuke_ | nqp: my @a := nqp::list_i(); nqp::setelems(@a, 2); for @a { say($_) }; | ||
camelia | 0 0 |
||
timotimo | because the slots in the list point at objects, but the slots that are "outside" the valid region aren't visited by the gc | 22:54 | |
so they should point at memory in invalid places | |||
nqp: my @a := nqp::list(nqp::rand_n(1), nqp::rand_n(1), nqp::rand_n(1), nqp::rand_n(1)); nqp::setelems(@a, 2); for @a { say($_) }; say("reset @a"); nqp::force_gc(); nqp::force_gc(); nqp::setelems(@a, 4); for @a { say($_) } | 22:55 | ||
camelia | (signal SEGV)0.632658301795547 0.275444088306517 reset @a 0.632658301795547 0.275444088306517 |
||
timotimo | there you go | ||
we should really be nulling these slots when resizing the array | |||
i think i'll go to bed early today | 22:56 | ||
MasterDuke_ | so is there some sort of 'off by n' error in set_size_internal and/or zero_slots | ||
timotimo | yeah | 22:59 | |
we need to grab "elems" before we resize the thing | |||
hmm | |||
we sort of do | |||
i'd have to step through it or something, but i'll go to bed early today, which is ... now? | 23:02 | ||
MasterDuke_ | later... | 23:03 | |
timotimo | good luck with this :) | 23:05 | |
your mission, should you choose to accept it ... :) | |||
are you a bad enough dude to zero the slots? | 23:06 | ||
MasterDuke_ | we'll see. also trying to implement a VM in perl 6 | 23:07 | |
timotimo | a perl6 vm in perl6? :) | ||
MasterDuke_ | which i don't think i've ever done before | ||
heh, i'm not certifiable | 23:08 | ||
but no, just started this challenge.synacor.com/ | |||
timotimo | neat. | 23:10 | |
MasterDuke_ | friend of mine did it in rust, so now i have to show how much better perl 6 is | 23:11 | |
timotimo | i hope you find a few things to improve in moar and rakudo along the way :) | 23:12 | |
but not too much :D | |||
MasterDuke_ | well, i tried to make a uint15 subset of uint16, but that doesn't work. showed the error here earlier | 23:14 | |
timotimo | right | 23:15 | |
MasterDuke_ | m: subset uint15 of uint16 where 0 <= * <= 32775; my uint15 $a = 1 | ||
camelia | Type check failed in assignment to $a; expected uint15 but got Int (1) in block <unit> at <tmp> line 1 |
||
MasterDuke_ | seems like a bug to me | 23:16 | |
timotimo | do we do subsets of natives at all? anywhere? | ||
MasterDuke_ | but i don't know if subsetting natives is even allowed | ||
m: subset uint15 of uint16 where 0 <= * <= 32775; my uint16 $a = 1; my uint15 $b = $a | 23:18 | ||
camelia | Type check failed in assignment to $b; expected uint15 but got Int (1) in block <unit> at <tmp> line 1 |
||
MasterDuke_ | i would think it should either work or error when i try to create the subset of the native type | 23:19 | |
a quick grep in roast shows nothing for subset of native types | 23:21 | ||
timotimo | perhaps an NYI exception would be in order | 23:22 | |
can you find anything in perl6-all-modules? | |||
MasterDuke_ | nothing there either | 23:23 | |
timotimo | good | ||
so nobody found a way to make it work | |||
MasterDuke_ | i'll rakudobug it so it doesn't slip through the cracks | 23:25 | |
any thought's on whether it should or shouldn't be allowed? | 23:26 | ||
timotimo | it'd be cool if we could | 23:27 | |
it might be a SMOP | |||
MasterDuke_ | i don't think i have any idea how subsets are currently implemented | 23:28 | |
timotimo | look at SubsetHOW is my guess | 23:30 | |
(if that exists?) | |||
also i expect the signature lowerer has a little bit for that kind of thing | |||
MasterDuke_ | RT #131310 | 23:34 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131310 |