Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-03-17

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:32 samcv hmm let me take a loot at the null-normalization branch. just got home, way away. still need to read all the scrollback
00:34 timotimo uh oh :)
00:34 timotimo lots of spam
00:34 timotimo me not understanding stuff, then jn explaining
00:34 timotimo fwiw, the discussion about normalization and Uni vs Str and such started in #perl6-dev
00:34 timotimo and then suddenly moved over here
00:35 samcv ah
00:35 samcv so basically we want to get to the point where we can have no normalization of strings for our various string operators right?
00:36 timotimo oh, i'm not entirely sure if "no normalization" is also supposed to go into Str
00:36 samcv at least from the MVM side i'm talking about.
00:36 samcv yeh no it may not be
00:36 timotimo i thought "no normalization" goes straight into Uni, but i just didn't think about it at all
00:36 samcv but regardless, the MVM functions need the ability to deal with this
00:36 timotimo it'd still be nice to have a way to get from bytes ditrectly to Uni
00:36 timotimo aye
00:37 samcv also can we UTF-8 encode strings without normalizing atm jnthn ?
00:37 samcv idk the Uni datatype doesn't act like a string
00:37 samcv m: Uni.new(55,55).say
00:37 camelia rakudo-moar 79f268: OUTPUT: «Uni:0x<0037 0037>␤»
00:38 samcv i mean there should be a way to convert that into a utf-8 outputtable string for output without normalization
00:38 samcv jnthn would know if we have or don't have that since i don't know that much about the utf8 stuff other than the minor look at i've don
00:40 timotimo we can't utf-8 encode strings without normalization because NFG isn't a thing we can encode into utf8
00:40 samcv and then we need to support string indexing and such with no normalization, which won't be that hard
00:41 timotimo and we can only put nfg-normalized stuff into strings in the first place
00:41 timotimo only with utf8-c8's magic is it possible to get differently-normalized stuff through from Str to Blob
00:41 samcv yeah
00:42 samcv idk maybe we need to rethink things for 6.d or further on or something
00:42 samcv cause this could be a big problem for people adopting perl 6
00:43 samcv i mean there are many cases when you want everything to just be not normalized. and if it's not normalized we can still have it put it into graphemes but there's a lot of places we try and keep things normalized so not sure how we would do it
00:43 samcv timotimo, but it seems that we are trying to add a NULL normalization option so we can not do normalization? and store it in a MVMString?
00:44 samcv idk maybe have some attribute of the MVMString to denote if it is nfg form or un-normalized or whatever form it wants to be kept at
00:44 samcv since you're supposed to be able to do Q:NFD/blah nfd string/
00:45 timotimo having null normalization is a prerequisite to go from utf8 directly to Uni
00:45 samcv ok great
00:46 timotimo in the backlog jnthn is speculating a bit about Str with different normalization to behave the same as NFG, but work at O(n) complexity rather than O(1)
00:46 timotimo (for direct indexing i mean)
00:47 samcv where n is what?
00:47 samcv having to normalize it before matching? or what
00:48 timotimo nah, indexing into the string
00:49 samcv yeah but what changes the n
00:50 timotimo length of the string
00:50 geekosaur "behaves like NFG" implies you still index by graphemes.. which are not fixed width in other normalizations
00:50 geekosaur so you'd have to iterate through the string instead of direct indexing
00:50 timotimo right. i don't think i understood the question
00:51 geekosaur samcv, that's big-O notation
00:51 samcv yeah i know what that is
00:51 samcv i just don't understand how that would be n based on length of the string
00:51 samcv so was wondering if it had to due with complexity of the composition state
00:52 samcv i mean you can put non nfg in graphemes
00:52 samcv it would just be a synthetic
00:53 samcv and any synthetics we would have to maybe put in NFG form before doing part of the indexing
00:53 samcv so it could depend on how many synthetics there are there
00:53 samcv that is my thinking
00:54 geekosaur well, in this case O(n) is bounded by the length of the string, but in an actual use case you only know n after you've iterated to find it
00:55 geekosaur but "bounded" is what big-O is about
00:56 samcv yeah for sure
00:57 geekosaur we're basically asserting the worst-case behavior, because best case is O(1) (always the first grapheme) and average case depends on exactly how it's being used and can't really be estimated over all use cases
02:48 ilbot3 joined #moarvm
02:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
03:04 MasterDuke how do i get a backtrace with gdb after my perl6 code has died. it dies and then i try `bt full`, but i just keep getting `no stack`
03:05 geekosaur you would need to set a breakpoint in perl6's exception handler; from gdb's point of view, perl6 has exited so there is no stack
03:07 geekosaur (unless it is dying on a signal)
03:08 MasterDuke not a signal, just a standard moar exception_adhoc
03:08 geekosaur right, gdb doesn't know about those
03:10 MasterDuke `break <rakudo file:line number>` doesn't work
03:10 geekosaur gdb is not a perl 6 debugger, it is a C / C++ debugger
03:11 geekosaur no it does not intercept perl 6 exceptions, no it does not understand perl 6 source files or even moarvm bytecode files
03:12 MasterDuke right. so how do i "set a breakpoint in perl6's exception handler"?
03:12 geekosaur if you want it to stop on a moarvm exception, find the C function in moarvm that is invoked on moarvm exceptions and set a breakpoint there
03:13 MasterDuke i just set a breakpoint on MVM_exception_throw_adhoc, and now `bt full` has some info, but it also keeps saying `No symbol table info available.`
03:15 geekosaur that means your moarvm executable doesn't have a symbol table in it. I don;t know offhand how you build moarvm with debug symbols
03:16 MasterDuke i did build it with --debug=3
03:23 MasterDuke doh, i was running my system perl6 with gdb, not my local version
04:14 MasterDuke m: class :: { has uint64 $.x; }.new( x => 2**64-1 ).x.say
04:14 camelia rakudo-moar 79f268: OUTPUT: «-1␤»
04:16 MasterDuke jnthn: ^^^ that's what i'm stuck on now. i have two passing todos in t/spec/S02-types/int-uint.t, but the above test in t/spec/S02-types/native.t now dies
04:18 MasterDuke the annoying thing is it's a todo test because it normally gives -1 as you see above, when it should give 2**64-1. the problem i'm running into is that even though the attribute is a uint64, attribute creation/assignment/etc uses signed ops
04:19 MasterDuke so dies with `Cannot unbox 64 bit wide bigint into signed native integer`, which would be correct if it were an int64 attribute
04:24 MasterDuke .tell jnthn some comments here https://irclog.perlgeek.de/moarvm/2017-03-17#i_14279344 if they get lost in your backscroll
04:24 yoleaux2 MasterDuke: I'll pass your message to jnthn.
06:35 domidumont joined #moarvm
06:41 domidumont joined #moarvm
07:01 domidumont joined #moarvm
07:18 domidumont joined #moarvm
07:57 brrt joined #moarvm
07:58 brrt good * #moarvm
08:25 brrt i need to rubberduck a bit
08:26 brrt so, before a call, all active values that 'survive' the call need to be spilled
08:45 samcv hello brrt
09:00 zakharyas joined #moarvm
09:36 domidumont joined #moarvm
09:53 jnthn brrt: Aren't there some caller-save registers?
09:53 yoleaux2 04:24Z <MasterDuke> jnthn: some comments here https://irclog.perlgeek.de/moarvm/2017-03-17#i_14279344 if they get lost in your backscroll
09:54 jnthn brrt: Or is the point "we can't really take advantage of those for anything pointing to GC-managed objects"?
10:42 timotimo that was a very short rubber ducking session
10:43 jnthn Or a very asynchronous one :)
10:44 timotimo or that
10:44 nwc10 jnthn: I got this one again: http://paste.scsys.co.uk/557532
10:45 nwc10 it's identical. (diff says so)
10:45 timotimo impressive
10:46 jnthn Once in 3 days. Arrgh.
10:46 nwc10 yes. enough that it repeats
10:46 nwc10 not enough to be easily repeatable in a debugging session
10:46 nwc10 and ASAN does not barf
10:47 nwc10 actually, 5.5 days from first to second
11:07 brrt hi samcv, jnthn, timotimo, nwc10
11:07 brrt it was interrupted by $work
11:07 brrt anyway
11:09 brrt jnthn; yes there are, we could use them, but, in general, you need to restore them prior to returning
11:09 brrt it is not always a clear win to do this
11:10 brrt (it would make my job a *bunch* simpler, though)
11:11 jnthn Not if we can only use them for natives, though, I guess :)
11:14 brrt well, that's a thing too
11:14 brrt but that is actually more complicated
11:14 jnthn Yeah, I figured :)
11:14 jnthn Something for later once the "just always spill" case works, I guess
11:16 brrt right
11:16 brrt that's basically precisely why i didn't implement some very easy optimizations yet
11:17 brrt if i did that, i wouldn't have known if the 'bad case' ever worked
11:17 brrt anyway, the difficulty that started my sessions
11:17 brrt *session
11:19 brrt I've approached this as 'shuffling' problem, i.e. the basis is that I use a graph of where each value has to move to, and where they are, and then use topological sort to get there
11:20 brrt so, suppose the value in %rdi has to go to %r8 and some stack location; and the value in %r14 has to go to %rdi, and the value in %rsi has to go to the stack location
11:20 brrt or, some value from 'local' space has to go to %rsi
11:21 brrt all sorts of edges, things
11:22 jnthn Think I get the idea of how topological sort would help with that
11:22 jnthn It's basically a dependency thing
11:22 brrt right
11:22 jnthn "we need to have got the value in rdi handled before we can use that register"
11:22 brrt so; there can be cycles though
11:22 brrt %rdi -> %rsi and %rsi to %rdi
11:22 brrt got that covered as well
11:22 jnthn Yeah, that'll upset a toposort unless broken :)
11:23 jnthn How do you do it? Temporary register and extra edge?
11:23 brrt so one of the benefits that we have is that I know that I only get 'cycles' at the end
11:23 brrt yes
11:24 brrt i push the cycling nodes on a stack, move the first register in the cycle to a spare register, insert transfers while popping, and insert a transfer from the spare register to the stack
11:26 brrt but the problem is that my detection 'do i need to handle this thing' doesn't work with values that are live, but not used
11:26 brrt because they are not used, they are never marked as done, and so the toposort thinks it's not safe to proceed, and that it can't resolve the cycles
11:27 brrt because I know I'm spilling them, I can just mark them as done anyway
11:27 brrt but that means that I 'delay' the spillage until i've started the topological sort
11:28 jnthn Live but not used as in, live but are not needed for the call that is being generated?
11:28 timotimo hm, so an extra pass that determines at what point a value becomes forever-dead might help?
11:28 brrt yeah
11:28 brrt live but not *currently used*
11:29 brrt re: extra pass, that's not necessary, because I already know that
11:29 brrt from the live range determination step
11:30 timotimo oh, OK
11:31 brrt the simplest thing from the perspective of the process currently is to spill such registers directly, and never mark their registers, even *if* the surviving value may be used
11:31 jnthn In some sense aren't those the "easy cases" in that we know we have to spill them and they're always going somewhere non-register?
11:31 brrt right
11:34 jnthn Are we in a position to just spill 'em up-front and not even involve them in the topsort?
11:35 brrt we could surely do that, it'd just be wasteful
11:36 jnthn How so?
11:36 jnthn Wasteful in terms of compilation time, or in the generated code?
11:38 brrt generated code
11:39 brrt basically, you'd argue to lay out your argument s on the stack, and then load them into registers directly, totally neglecting if any of those values need to be live afterwards or ever need to be on the stack
11:40 brrt for few-argument function calls, that would be pretty wasteful
11:41 jnthn Oh, I meant just doing it for those that we know are live but that are not going to be involved in the call
11:42 timotimo can we just count how many spots we need to open up and only spill a random subset of stuff?
11:42 jnthn Essentially, partitioning register contents into three: those things that are used in the call, those that are live but not used in the call, and those that are dead
11:43 jnthn Doing nothing for the dead, spilling the live-but-not-used-in-call directly, then using toposort to efficiently shuffle around those used in the call
11:44 brrt no, we need to spill every survivor
11:45 brrt jnthn, that is indeed the correct solution, *but* we then need to check if a value is used, and that's… annooying
11:45 timotimo trespassers will be spilled. survivors will be spilled again.
11:46 brrt hehehe
11:47 brrt so i was kind of hoping, if i move it into another part of the process, will things be nicer?
11:47 jnthn brrt: What makes it annoying, ooc?
11:49 brrt 'is this value used' means i need to iterate over an array (arglist_values) to see if my value is there; i don't have a cheap O(1) way to do that, whereas for registers, I do, because the number of rtegisters is small enough to make a bitmap
11:51 brrt matter of fact
11:51 brrt that could simplify a bunch of things potentially
11:51 brrt let me thinks
11:53 MasterDuke would this be an ok time to jump in with a question about how values are assigned to class attributes, particularly native uint ones?
11:54 brrt always :-)
11:55 MasterDuke excellent. the question is, how do i get the assignment to use decont_u?
11:56 MasterDuke m: class :: { has uint64 $.x; }.new( x => 2**64-1 ).x.say
11:56 camelia rakudo-moar 79f268: OUTPUT: «-1␤»
11:56 MasterDuke m: my $a = class :: { has uint64 $.x is rw; }.new; $a.x = 2**64-1; $a.x.say
11:56 camelia rakudo-moar 79f268: OUTPUT: «-1␤»
11:57 MasterDuke the -1 is the problem i'm trying to solve
11:57 MasterDuke and i believe i have. however, my local build (same rakudo, just modified moar) dies with `Cannot unbox 64 bit wide bigint into signed native integer` in both cases
11:58 MasterDuke m: my uint64 $a = 2**64-1; $a.say
11:58 camelia rakudo-moar 79f268: OUTPUT: «-1␤»
11:59 MasterDuke i have (had) that working, but not the attribute case
12:06 MasterDuke oh, and the moar backtrace for when it dies locally start in OP(decont_i) in interp.c -> MVM_6model_container_decont_i -> get_int -> mp_get_int64
12:07 MasterDuke where i think it should be OP(decont_u) in interp.c -> MVM_6model_container_decont_u -> get_uint -> mp_get_int64
12:11 brrt what's the coodegen like
12:13 MasterDuke https://gist.github.com/MasterDuke17/35cc219ca95dcb23d835a0928bfdafdd
12:13 brrt anyway, i'd like to coin a term for something i've seen to many times: the 'Horror Interpretas', when you realize that instead of a solution to a business problem, someone's made an interpreter for solutions to the business problem
12:13 brrt closely related to the Entity Value Model
12:14 MasterDuke updated gist, first file is --target=ast, second is --target=optimize
12:18 brrt —target=mast?
12:19 MasterDuke updated. i've never looked at that output before
12:20 MasterDuke i see three `bindattr_o`, which is better than _i
12:22 brrt hmmm
12:22 brrt well, it's not native
12:25 MasterDuke https://gist.github.com/MasterDuke17/35cc219ca95dcb23d835a0928bfdafdd#file-gistfile3-txt-L242 that doesn't look good
12:27 brrt so, it's a codegen issue it seems
12:32 MasterDuke yeah, and i think this is where i started going down the path of adding a lot of _u ops
12:32 MasterDuke but if there's an easier solution i'd be all for it
12:33 brrt okay, so, our basic integer size is 64 bits always
12:33 brrt 64 bit 'move' operations are sign-free
12:33 brrt so, it doesn't matter
12:34 brrt as long as you don't have to cast to a larger number
12:34 brrt what does matter is artithmetic and interpretation
12:36 MasterDuke this is where i've been working https://github.com/MoarVM/MoarVM/blob/master/src/6model/reprs/P6bigint.c#L9
12:38 MasterDuke the `if (bits > 64) {` line is incorrect for signed ints
12:57 lizmat joined #moarvm
14:48 hoelzro joined #moarvm
15:17 Ven joined #moarvm
15:54 brrt joined #moarvm
16:13 brrt joined #moarvm
17:18 Ven joined #moarvm
19:24 jnthn Anyone got anything in the way of me cutting a release?
19:25 jnthn (As in, reasons I shouldn't :))
19:35 Geth ¦ MoarVM: 35ca96dc8f | (Jonathan Worthington)++ | docs/ChangeLog
19:35 Geth ¦ MoarVM: Update ChangeLog for 2017.03.
19:35 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/35ca96dc8f
19:41 Geth ¦ MoarVM: fe15a1aa86 | (Jonathan Worthington)++ | VERSION
19:41 Geth ¦ MoarVM: Bump VERSION.
19:41 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/fe15a1aa86
19:42 jnthn Will do the rest later; feel free to spot any mistakes I missed in the changelog
19:47 domidumont joined #moarvm
19:52 timotimo "grapehemian rhapsody"? :3
19:54 timotimo i'd reword "when string `a` changes length" to "when the needle changes length"
19:54 jnthn Hm, a'd be the haystack, no?
19:55 jnthn "Are these real code points? Is this just fantasy? Caught in NFG...a synthetic reality"
19:55 timotimo well, that's a good reason to reword the entry :D
19:55 timotimo the function has haystack first, then needle
19:56 timotimo so i expect you're right
19:57 Geth ¦ MoarVM: 6472908d0d | (Jonathan Worthington)++ | docs/ChangeLog
19:57 Geth ¦ MoarVM: Improve wording; timotimo++.
19:57 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6472908d0d
19:57 domidumont joined #moarvm
19:58 Geth ¦ MoarVM: e964a2c43c | (Jonathan Worthington)++ | docs/ChangeLog
19:58 Geth ¦ MoarVM: Fix typo; MasterDuke++.
19:58 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e964a2c43c
20:00 jnthn Alrighty, walk now; will cut the release later this evening
20:09 nwc10 it's not raining?
20:21 samcv good * everyone
20:21 samcv wooo is it release time now
20:21 samcv fun
21:46 jnthn It was making an attempt at raining
21:47 jnthn But it wasn't even drizzle, just the odd drop
21:47 jnthn Tomorrow is rain and gales
21:47 jnthn If it's as icky as forecast, I suspect I'll walk about as far as the pub next door :P
21:50 samcv ☔ ⛆ ⛈🌦🌧
21:50 jnthn Oh dear, make release now produces a busted tarball :(
21:51 jnthn Wow, the only one of those I can see anywhere is the umbrella at the start
21:52 jnthn Neither the font I use for my IRC client nor whatever Chrome uses in the IRC log as the others
21:52 jnthn m: say uninames('⛆⛈��')
21:52 camelia rakudo-moar 79f268: OUTPUT: «(RAIN THUNDER CLOUD AND RAIN REPLACEMENT CHARACTER REPLACEMENT CHARACTER)␤»
21:52 samcv what distro do you have jnthn
21:53 jnthn Oh, interesting
21:53 jnthn Ubuntu 16.04
21:53 jnthn And in Firefox on that they all render fine :)
21:54 samcv what is your irc displayed in?
21:55 jnthn I run Windows as the host OS, and do the majority of my dev work in an Ubuntu VM. Since the virtualization costs something, stuff that usually doesn't matter ends up run outside of the VM.
21:55 jnthn So the Chrome I looked at was Chrome on Windows
21:55 jnthn IRC is PuTTY + screen + irssi
21:55 samcv ah ok
21:56 jnthn So there's 3 places for things to be confused :)
21:56 jnthn The machine running screen + irssi is some Debian
21:56 samcv i would install noto fonts on windows
21:56 jnthn I suspect I'll have some new hardware soon, and am trying to decide whether to flip the host/guest in the process
21:57 samcv jnthn, see here https://www.google.com/get/noto/help/install/
21:57 samcv will give you almost full unicode coverage
21:57 jnthn ooh, cool, thanks! :)
21:57 samcv :)
21:57 jnthn So, lemme try and figure out why make release got busted during the month...
21:58 jnthn ah
21:58 jnthn src/6model/reprs/P6bigint.h:1:21: fatal error: tommath.h: No such file or directory
21:58 jnthn Bet that'll be something to do with the submodule switch
21:59 samcv oo yeah
21:59 jnthn Yeah, release.sh needs an update
21:59 jnthn src/core/interp.c:1514:42: warning: implicit declaration of function ‘MVM_string_index_ignore_case’ [-Wimplicit-function-declaration] GET_REG(cur_op, 0).i64 = MVM_string_index_ignore_case(tc,
22:00 jnthn Not a blocker, but did we forget a .h file addition?
22:00 samcv there is no .h addition
22:01 jnthn Ah, that'll be why there's the warning.
22:02 Geth ¦ MoarVM: 77b9195ecf | (Jonathan Worthington)++ | tools/release.sh
22:02 Geth ¦ MoarVM: Fix `make release` now libtommath is a submodule
22:02 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/77b9195ecf
22:04 Geth ¦ MoarVM: bb8eae83ab | (Jonathan Worthington)++ | src/strings/ops.h
22:04 Geth ¦ MoarVM: Add missing prototype, to fix a warning.
22:04 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/bb8eae83ab
22:04 jnthn That fixes it
22:06 jnthn Seems we introduced a couple with the concat/repeat result bound checks too
22:06 jnthn But those are just format string type warnings
22:07 jnthn MasterDuke: If you fancy fixing a couple of warnings, https://gist.github.com/jnthn/92b96619b20ca076b5cb18373cac3df9 :)
22:07 jnthn We're warning-clean on gcc once those are fixed :)
22:09 jnthn https://www.moarvm.org/releases/MoarVM-2017.03.tar.gz :)
22:10 IOninja w00t
22:14 jnthn I was worrying over a failing S17-supply/basic.t spectest failure
22:14 jnthn Turned out it's an uncommited local test for a bug I got half way through fixing a week ago :P
22:14 IOninja :)
22:14 IOninja jnthn++
22:14 jnthn Other than that, spectest is clean for me
22:15 IOninja I think there are a bunch of failures on 6.c-errata. I don't recall anyone pushing a fix to them.
22:15 IOninja These https://irclog.perlgeek.de/perl6-dev/2017-03-14#i_14261864
22:16 jnthn Hmm... t/spec/S17-supply/map.t
22:17 jnthn Oh
22:17 jnthn commit 93bd430e1a7b62ac6a78ff5835624ec3b3741ea1
22:17 jnthn Author: Elizabeth Mattijsen <liz@dijkmat.nl>
22:17 jnthn Date:   Wed Mar 1 13:52:06 2017 +0100
22:17 jnthn Handle fallout of List.reverse -> Seq migration
22:17 IOninja Yea
22:17 IOninja Same needs in 6.c-errata
22:17 * IOninja will do later
22:17 jnthn Yeah, I think that one can just be cherry-picked
22:18 jnthn Heh, .reverse :)
22:18 jnthn It returning a Seq brought it into consideration for .hyper and .race
22:19 jnthn Funny thing is that you can implement .reverse as identity under .race
22:19 jnthn Because how would anybody know :P
22:19 jnthn (I've suggested it warn too, though, 'cus it almost certainly indicates confusion)
22:20 IOninja :D
22:24 MasterDuke huh, don't get those warnings with gcc 6.3.1 on arch linux. but yeah, i'll fix them
22:25 jnthn MasterDuke++ # thanks :)
22:33 Geth ¦ MoarVM: MasterDuke17++ created pull request #555: Use correct format for repeat/concat errors
22:33 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/555
22:33 Geth ¦ moarvm.org: 57ba9761bb | jnthn++ | 2 files
22:33 Geth ¦ moarvm.org: Update site for 2017.03 release.
22:33 Geth ¦ moarvm.org: review: https://github.com/MoarVM/moarvm.org/commit/57ba9761bb
22:47 jnthn samcv: D'oh, only just saw you left some more ChangeLog comments...sorry 'bou tthat
22:50 samcv np
22:52 jnthn Alright, think I should relax now. Will look at PRs tomorrow or so :)
22:53 timotimo good 'laxin, jnthn :)
23:01 jnthn Hm, even after switching PuTTY to use the Noto font, I don't see the rain stuff properly
23:01 jnthn So maybe it's irssi or screen
23:16 timotimo yeah, both of these things aren't terribly fantastic :P
23:16 timotimo i use weechat and tmux for some reason :P
23:44 IOninja jnthn: TimToady are you around? Is this a bug? https://rt.perl.org/Ticket/Display.html?id=130980#txn-1453443  The current behaviour breaks 6.c-errata, and we need to know if the new change is a bug or if the old behaviour is the bug and the 6.c-errata can be changed
23:50 IOninja m: my $a = 0; my @a = ($a++,) Zxx 42; say $a; say @a; say $a
23:50 camelia rakudo-moar 16ef21: OUTPUT: «0␤[(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41)]␤42␤»
23:51 IOninja (note the $a being first zero then 42)
23:52 IOninja This looks buggish to me:
23:52 IOninja m: my $a = 0; @ = eager ($a++,) Zxx 42; say $a;
23:52 camelia rakudo-moar 16ef21: OUTPUT: «0␤»
23:52 * IOninja leaves to play games for a bit...
23:53 timotimo glhf

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary