Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-11-23

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:16 viki FWIW, there's a probably "controvercial" PR on changing what sub MAIN Usage message looks like. If anyone wants to weigh in: https://github.com/rakudo/rakudo/pull/926
00:38 dalek rakudo/nom: f544e4c | samcv++ | src/core/REPL.pm:
00:38 dalek rakudo/nom: Fix add history for readline, since the method is called add-history, it's the function that's called add_history
00:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f544e4c227
00:38 dalek rakudo/nom: 717a84d | (Zoffix Znet)++ | src/core/REPL.pm:
00:38 dalek rakudo/nom: Merge pull request #927 from samcv/nom
00:38 dalek rakudo/nom:
00:38 dalek rakudo/nom: Fix add history for readline, since the method is called add-history,…
00:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/717a84db29
00:40 samcv viki, I don't see how that fixes the problem of making names 'readable' since it only changes the name of the variable
00:41 samcv err. is there already a 'command'?
00:41 samcv and it gets that instead of the full thing when you do $*PROG-NAME ?
00:42 samcv ah. that's probably what it's doing then? if so then that's probably a good thing
00:42 samcv tho $*PROG-NAME implies it's the program's name, not the command name?
00:45 samcv or maybe making $*PROG-NAME say the name of the program THEY run and have another new variable for the name of where it's being run at
00:46 viki samcv: it changes the program name--the giant string with a sha hash in it (for some scripts)--to the *literal* word "command"
00:46 samcv or maybe make a $*CMD-NAME for the command, and $*PROG-NAME be the programs name
00:46 samcv that is actually running at that point
00:46 viki With the idea being that since the user managed to get to the usage screen, they already know what program they're running
00:46 samcv ah. ok
00:47 viki m: say $*CMD-NAME
00:47 camelia rakudo-moar 689da7: OUTPUT«Dynamic variable $*CMD-NAME not found␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
00:47 samcv but this wouldn't change the $*PROG-NAME variable right?
00:47 samcv only change the auto-help output?
00:47 viki right
00:47 samcv ok then ++
00:47 viki Just the output
00:47 samcv very good
00:56 japhb Yeah, ++ from me as well. 'command' is LTA, but the current state is just *awful*, so I'm in favor of doing the intermediate improvement now.
01:11 dalek rakudo/nom: 1369de9 | (Bahtiar `kalkin-` Gadimov)++ | src/core/Main.pm:
01:11 dalek rakudo/nom: Usage replace $*PROG-NAME with literal “command”
01:11 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1369de949c
01:11 dalek rakudo/nom: 6ee524c | (Zoffix Znet)++ | src/core/Main.pm:
01:11 dalek rakudo/nom: Merge pull request #926 from kalkin/nom
01:11 dalek rakudo/nom:
01:11 dalek rakudo/nom: Usage replace $*PROG-NAME with literal “command”
01:11 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6ee524c655
01:17 pyrimidine joined #perl6-dev
01:26 pyrimidine joined #perl6-dev
02:12 vendethiel- joined #perl6-dev
02:18 FROGGS joined #perl6-dev
02:48 ilbot3 joined #perl6-dev
02:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:59 FROGGS_ joined #perl6-dev
06:03 samcv zef --at
06:03 samcv Usage:
06:03 samcv command [--force (False True)] fetch [<identities> ...] -- Download specific distributions
06:03 samcv ah so it literally says 'command' now. not any other value
06:11 nine FWIW I'd have NACKed the PR as a much better solution would not have been all that difficult
06:42 [TuxCM] http://www.perlmonks.org/?node_id=1176379 needs an answer
06:46 samcv nine, NACK?
06:47 samcv negative ACK?
06:47 nine samcv: I'd much rather have it display the original command's name instead of the confusing 'command'
06:47 samcv yeah.
06:48 nine samcv: oh, yes NOT ACK
06:48 samcv same
06:51 RabidGravy joined #perl6-dev
06:53 [TuxCM] This is Rakudo version 2016.11-37-g6ee524c built on MoarVM version 2016.11-8-gb582aeb
06:53 [TuxCM] csv-ip5xs        3.278
06:53 [TuxCM] test            13.706
06:53 [TuxCM] test-t           6.500
06:53 [TuxCM] csv-parser      14.111
06:58 samcv nine, ␕ there's a unicode symbol for that apparently
07:00 nine samcv: now would be a good time to have a better font for my terminal :)
07:00 samcv heh
07:00 samcv what terminal do you use?
07:00 nine konsole
07:01 samcv well it's kinda small anywhere really. i mean can you see it? just small?
07:01 samcv or not see it at all
07:02 nine Actually yes :)
07:03 nine s/a better font for my terminal/extremely high resolution display/
07:04 samcv ah
07:06 dalek rakudo/nom: b597b7c | niner++ | src/core/ (2 files):
07:06 dalek rakudo/nom: Show original program name in MAIN_HELPER instead of 'command'
07:06 dalek rakudo/nom:
07:06 dalek rakudo/nom: Installed scripts are stored as resources in a
07:06 dalek rakudo/nom: CompUnit::Repository::Installation and called via a wrapper script
07:06 dalek rakudo/nom: stored in path.
07:06 dalek rakudo/nom: $*PROGRAM-NAME contains the path to the resource while the user should
07:06 dalek rakudo/nom: only have to deal with the wrapper script. So use an environment
07:06 dalek rakudo/nom: variable to override $*PROGRAM-NAME in that case and show the wrapper
07:06 dalek rakudo/nom: script's path in MAIN_HELPER error messages instead.
07:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b597b7cd81
07:06 nine There, that wasn't so bad at all :)
07:18 samcv nine, hmm that didn't work for me
07:19 samcv getting the full name of the file
07:19 samcv unless i need to do a make clean or something
07:21 ugexe that fixes the sha1 name, but not the full path when shadowed (usually by rakudobrew/bin wrappers)
07:24 samcv doing `zef --what` i get
07:30 nine samcv: need to reinstall zef
07:30 nine to get the updated wrapper script
07:42 samcv ah ok :)
07:48 samcv nine++ :) awesome
08:10 brrt joined #perl6-dev
08:33 Ven_ joined #perl6-dev
09:23 Ven_ joined #perl6-dev
09:49 Ven_ joined #perl6-dev
10:01 samcv nine, curious, what was the reason that hashes were chosen instead of file names for perl 6 modules?
10:08 nine samcv: full story starting at page 20: http://niner.name/talks/A%20look%20behind%20the%20curtains%20-%20module%20loading%20in%20Perl%206/Module%20loading%20in%20Perl%206.pdf
10:09 nine samcv: keywords: Unicode on file systems and versioning
10:23 samcv thanks
10:29 psch oh phooey.  inheriting from (at least abstract) Java classes is another thing we probably want, isn't it...
10:29 psch that's gonna be fun
10:33 psch hmm, parts of that might fall out from 'does'-able java Interfaces...
10:34 psch although default and static methods in Interfaces since java 1.8 makes me think they kinda don't want anyone to use abstract classes anymore
10:35 psch ...what a mess :S
10:38 psch i mean, as of java 1.8 the only difference between abstract classes and interfaces is that you extend exactly one abstract class and implement as many (non-conflicting) interfaces as you like...
10:45 TimToady joined #perl6-dev
11:05 viki [TuxCM]: answer that perlmonks isn't the right place to ask about Perl 6 and tell them to come to our IRC.
11:06 viki m: my @list = (1, 2|3, 4); say any(2,3) + 2
11:06 camelia rakudo-moar b597b7: OUTPUT«any(4, 5)␤»
11:07 viki m: my @list = (1, 2|3, 4); say sum @list
11:07 camelia rakudo-moar b597b7: OUTPUT«Type check failed in assignment to $sum; expected Numeric but got Junction (any(3, 4))␤  in block <unit> at <tmp> line 1␤␤»
11:07 viki m: my @list = (1, 2|3, 4); my $sum; $sum += $_ for @list; say $sum
11:07 camelia rakudo-moar b597b7: OUTPUT«any(7, 8)␤»
11:08 viki m: my @list = (1, 2|3, 4, 7|8); my $sum; $sum += $_ for @list; say $sum
11:08 camelia rakudo-moar b597b7: OUTPUT«any(any(14, 15), any(15, 16))␤»
11:08 viki m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list;
11:08 camelia rakudo-moar b597b7: ( no output )
11:08 viki m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list;  say $sum
11:08 camelia rakudo-moar b597b7: OUTPUT«any(any(107, 207), any(108, 208))␤»
11:08 viki m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list;  say $sum ~~ 108
11:08 camelia rakudo-moar b597b7: OUTPUT«True␤»
11:08 viki m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list;  say $sum ~~ 207
11:08 camelia rakudo-moar b597b7: OUTPUT«True␤»
11:09 viki [TuxCM]: so basically one answer is to do the sum manually ^ but since that works.. I wonder if we could make .sum DWIM too
11:10 viki [TuxCM]: and while you at it, tell that 1nickt guy to go and fuck himself.
11:18 arnsholt psch: Speaking of Java interop, do you have any ideas on how it should handle Java's early-bound method lookups vs. Perl 6's late-bound lookups?
11:19 psch arnsholt: well, i think the way it's being handle for overloaded methods and constructors works okay-ish
11:19 psch arnsholt: that is, on a Perl 6-side mmd call we dispatch to an indy FALLBACK that sorts through the arguments and calls the right Java method
11:20 psch arnsholt: so, basically, we don't really have mmd on interop wrapper - we just have one method that does late-ish (that is, as late as a jvm with indy allows) bound dispatch on the Java methods
11:26 psch *on an interop wrapper
11:28 psch j: use java::lang::String:from<JavaRuntime>; say String.^methods.grep({.name ~~ /new/ && .name !~~ /constructor/}) # like this
11:28 camelia rakudo-jvm 76b061: OUTPUT«(callout java.lang.String method/mmd+new/([Ljava/lang/Object;)Ljava/lang/String;)␤»
11:28 psch j: use java::lang::String:from<JavaRuntime>; say +(String.^methods.grep({.name ~~ /constructor/})) #
11:28 camelia rakudo-jvm 76b061: ( no output )
11:28 psch j: use java::lang::String:from<JavaRuntime>; say +(String.^methods.grep({.name ~~ /constructor/}))
11:28 camelia rakudo-jvm 76b061: OUTPUT«15␤»
11:28 psch the second is the number of constructors
11:29 psch and the invokedynamic FALLBACK in BootJavaInterop is called for the mmd+new method, which dispatches between those constructors
11:31 Ven_ joined #perl6-dev
11:32 psch arnsholt: does that answer your question? :)
11:34 arnsholt psch: Mostly, I think =)
11:34 arnsholt Hopefully it'll be a marginal issue in practice anyways
11:35 psch my advent post from 2014 goes into a bit more detail i think, though probably not on the technical side
11:35 psch i *think* the code in BootJavaInterop and RakudoJavaInterop is pretty clear, but then i've also spend a lot of time with it... :)
12:46 vendethiel joined #perl6-dev
12:53 timotimo dogbert17, dogbert17_, could you get me a stack trace of where moarvm panics? you should be able to set a breakpoint in MVM_panic for that purpose
13:24 viki m: use Test; cmp-ok 2, '!==', 42
13:24 camelia rakudo-moar b597b7: OUTPUT«not ok 1 - ␤␤# Failed test at <tmp> line 1␤# Could not use '"!=="' as a comparator.␤»
13:24 * viki kinda expected for !== to be auto-generated, since "!" is a metaop and all other metaops get autogenerated
13:35 * dogbert17_ dogbert17 is currently hiding at $work which complicates things :(
13:53 Ven_ joined #perl6-dev
14:03 dalek roast: 8c72fdd | (Zoffix Znet)++ | packages/Test/Util.pm:
14:03 dalek roast: Add is-deeply-junction to Test::Util
14:03 dalek roast:
14:03 dalek roast: is-deeply-junction( Junction $got, Junction $expected, Str:D $desc)
14:03 dalek roast:
14:03 dalek roast: Guts two junctions and uses C<is-deeply> test on those guts. Use to
14:03 dalek roast: compare two Junctions for equivalence. I<Note:> this test is rather strict
14:03 dalek roast: and will fail even if the two Junctions are functionally equivalent, for
14:03 dalek roast: example 1|2 and 2|1 are considered to be different Junctions.
14:03 dalek roast: review: https://github.com/perl6/roast/commit/8c72fdd9b8
14:10 dalek rakudo/nom: 8d04bec | (Zoffix Znet)++ | src/core/List.pm:
14:10 dalek rakudo/nom: Remove `Numeric` type restriction for .sum()
14:10 dalek rakudo/nom:
14:10 dalek rakudo/nom: Numerics aren't the only types we can end up with: there are also Junctions
14:10 dalek rakudo/nom:
14:10 dalek rakudo/nom: Spotted by m_turner++ on http://www.perlmonks.org/?node_id=1176379
14:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8d04bec0c6
14:10 dalek roast: 8362015 | (Zoffix Znet)++ | S02-types/list.t:
14:10 dalek roast: Test Junctions work with .sum/[+]
14:10 dalek roast:
14:10 dalek roast: Test for fix in commit:
14:10 dalek roast: https://github.com/rakudo/rakudo/commit/8d04bec0c65372911e717c370d4aa9a34acc8def
14:10 dalek roast: review: https://github.com/perl6/roast/commit/836201579b
14:14 viki .tell [TuxCM] bug fixed and I replied on PerlMongers letting that person know. RE: http://www.perlmonks.org/?node_id=1176379
14:14 yoleaux2 viki: I'll pass your message to [TuxCM].
14:40 dalek nqp: 70724a2 | jnthn++ | tools/build/MOAR_REVISION:
14:40 dalek nqp: Bump MOAR_REVISION for new captureinnerlex op.
14:40 dalek nqp: review: https://github.com/perl6/nqp/commit/70724a24d3
14:40 dalek nqp: c62785f | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
14:40 dalek nqp: Map MoarVM captureinnerlex op.
14:40 dalek nqp: review: https://github.com/perl6/nqp/commit/c62785fde8
14:40 dogbert17_ timotimo: can you try: ./perl6 -I lib t/spec/S04-declarations/constant.rakudo.moar               this panics for me
14:47 jnthn m: use Test; my @last; sub foo($a) { for ^$a { LAST @last.push($a); foo($a - 1) } } foo(3); is @last, [1, 1, 2, 1, 1, 2, 1, 1, 2, 3]
14:47 camelia rakudo-moar 8d04be: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Strange text after block (missing semicolon or comma?)␤at <tmp>:1␤------> a { LAST @last.push($a); foo($a - 1) } }⏏ foo(3); is @last, [1, 1, 2, 1, 1, 2, 1,␤    expecting any of:␤        infi…»
14:47 jnthn m: use Test; my @last; sub foo($a) { for ^$a { LAST @last.push($a); foo($a - 1) } }; foo(3); is @last, [1, 1, 2, 1, 1, 2, 1, 1, 2, 3]
14:47 camelia rakudo-moar 8d04be: OUTPUT«not ok 1 - ␤␤# Failed test at <tmp> line 1␤# expected: '1 1 2 1 1 2 1 1 2 3'␤#      got: '1 1 1 1 1 1 1 1 1 1'␤»
14:51 timotimo dogbert17_: ok 70 - Operator multi defined on comet works using snowman
14:51 timotimo # FUDGED!
14:53 jnthn m: use Test; sub foo($a) { supply { whenever Supply.from-list() { LAST emit $a } } }; is await(foo(42)), 42; is await(foo(69)), 69
14:53 camelia rakudo-moar 8d04be: OUTPUT«Tried to get the result of a broken Promise␤  in block <unit> at <tmp> line 1␤␤Original exception:␤    Type check failed in binding to value; expected Any but got Mu (Mu)␤      in block <unit> at <tmp> line 1␤␤»
14:55 dogbert17_ timotimo: so it worked for you, sigh
14:56 timotimo yes, that's the problem
14:56 timotimo my spec tests are clean
14:56 jnthn m: use Test; sub foo($a) { supply { whenever Supply.from-list(gather { die }) { QUIT emit $a } } }; is await(foo(42)), 42; is await(foo(69)), 69
14:56 camelia rakudo-moar 8d04be: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------>  Supply.from-list(gather { die }) { QUIT⏏ emit $a } } }; is await(foo(42)), 42; i␤    expecting any of:␤        scoped block␤»
14:56 timotimo except, i don't think i have it compiled with --valgrind or with the FSA size debug
14:56 dogbert17_ then I'll try the breakpoint thingy when I get home, where should I put the breakpoint?
14:56 jnthn m: use Test; sub foo($a) { supply { whenever Supply.from-list(gather { die }) { QUIT { default { emit $a } } } } }; is await(foo(42)), 42; is await(foo(69)), 69
14:56 camelia rakudo-moar 8d04be: OUTPUT«Tried to get the result of a broken Promise␤  in block <unit> at <tmp> line 1␤␤Original exception:␤    Type check failed in binding to value; expected Any but got Mu (Mu)␤      in block  at <tmp> line 1␤      in block <unit> at <tmp> line 1␤␤»
14:57 timotimo now i have FSA size debug turned on and it doesn't panic
14:57 dogbert17_ was it the flag I tested yesterday?
14:58 timotimo yes
14:58 dogbert17_ and you're on 64 bit I guess
14:58 timotimo yup
14:58 dogbert17_ grrr :)
14:59 dogbert17_ so where is this panic routine where I should put a breakpoint then?
15:00 timotimo are you aware that gdb lets you just say "break MVM_panic"?
15:03 dogbert17_ no I wasn't. you learn something new every day :)
15:03 timotimo :)
15:03 timotimo there is an incredible amount of stuff to learn about gdb. also things are really hard to find because the set of commands has grown "biologically" and apparently never got reformed ever
15:04 arnsholt Kind of like git! =)
15:04 timotimo that's why you delete breakpoints with "delete". why not "delete breakpoint" or "breakpoint delete"? because at one point there was nothing else that you could delete except for breakpoints
15:08 timotimo IMO, it's many times worse than git
15:12 |Tux| This blogger wants perl6 - http://blog.builtinperl.com/post/7-features-that-i-would-like-to-have-in-perl-5
15:14 DrForr This blogger also sits a few desks away from me :)
15:16 DrForr And I mentioned on the FB posting that fact. We can't post comments to builtinperl.com because.. nobody is allowed to take time to fix the problem.
15:17 timotimo how is Moose not good enough ...
15:18 ugexe i like when people say 'not production ready' and then don't back up that statement, and if they did it would likely only be 'thats what i heard'
15:19 dalek rakudo/nom: 4bec146 | jnthn++ | tools/build/NQP_REVISION:
15:19 dalek rakudo/nom: Get NQP/MoarVM with captureinnerlex op.
15:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4bec146267
15:19 dalek rakudo/nom: 6bb8823 | jnthn++ | src/Perl6/ (2 files):
15:19 dalek rakudo/nom: Fix various scoping bugs with NEXT/LAST/QUIT.
15:19 dalek rakudo/nom:
15:19 dalek rakudo/nom: These showed up under recursion and also in concurrent programs, and
15:19 dalek rakudo/nom: were the cause of many crashes involving supply/react blocks that used
15:19 dalek rakudo/nom: LAST and QUIT. Proc::Async in chars mode was vulnerable to this bug,
15:19 dalek rakudo/nom: for example.
15:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6bb8823794
15:19 ugexe in these cases its really 'developer not perl6 production ready'
15:20 viki pfft, I can back it up: it's not in my company's budget for the developer to wrestle with frequent bugs, which includes wondering if it's a bug, verifying on support channels that it is, and reporting it.
15:21 jnthn .tell tony-o Rakudo 6bb8823 nails, best I can tell, the odd crashes I've been seeing in things using Proc::Async in chars mode.
15:21 yoleaux2 jnthn: I'll pass your message to tony-o.
15:21 viki There were a couple (fixed now) where the result of the bug was a crash and there wasn't a simple workaround. That'd put the company's product at standstill
15:24 DrForr It's easy to dismiss the language out of hand because ... well, it's easy to say crap when you don't need to prove anything.
15:24 dogbert17_ timotimo: still there?
15:24 timotimo yup
15:24 dogbert17_ https://gist.github.com/dogbert17/6dbc29f58673115a37fd92a89d1166da
15:27 dalek roast: b7c19a8 | jnthn++ | S17-procasync/encoding.t:
15:27 dalek roast: Unfudge now-passing tests.
15:27 dalek roast: review: https://github.com/perl6/roast/commit/b7c19a8859
15:27 dalek roast: 77be933 | jnthn++ | S04-phasers/in-loop.t:
15:27 dalek roast: Add test for phasers in loops + recursion.
15:27 dalek roast: review: https://github.com/perl6/roast/commit/77be9335ab
15:28 dalek roast: 8265429 | jnthn++ | S17-supply/syntax.t:
15:28 dalek roast: Test LAST in whenever that never iterates.
15:28 dalek roast: review: https://github.com/perl6/roast/commit/8265429248
15:29 timotimo but i was hoping to get an error of the "wrong size used to free" variety
15:30 jnthn A break, then onto the next bug hunt...
15:32 timotimo a break, then a continue. but please not a last :)
15:34 dogbert17_ ah, the debugflag was zero again, lemme fix
15:38 dogbert17_ timotimo: now I got it: https://gist.github.com/dogbert17/069f700e3b1bd110c19c898464330f35
15:38 timotimo ok, this is about the NFG trie, then
15:38 timotimo i haven't looked at this thing even once ;(
15:39 timotimo but i recognize the string it's trying to decode
15:39 timotimo it's our big list of "what character has what successor"
15:39 timotimo and it's part of what we decode on every startup
15:39 timotimo i recently made changes to MVM_cu_obtain_string; could you check out a moarvm before that, please?
15:40 timotimo oh, before you change out of this
15:40 timotimo could you print the correct and wrong sizes inside MVM_fixed_size_free_at_safepoint there?
15:41 dogbert17_ you mean in src/core/fixedsizealloc.c
15:42 timotimo yeah, stack frame #1
15:42 timotimo i.e. "frame 1" "print dbg->alloc_size" "print bytes"
15:42 timotimo except bytes is already in the function signature, so not really needing printing
15:43 dogbert17_ does MVM_panic take sprintf like format strings?
15:43 timotimo yes, it does
15:43 timotimo ... i think?
15:43 timotimo yes, it does
15:44 timotimo but i was hoping you'd just do it in gdb so you don't have to recompile :)
15:46 dogbert17_ ah, you mean look at the vars with some inspect cmd?
15:47 timotimo with exactly the commands i wrote on irc :)
15:48 timotimo "frame 1" ought to put you into the stack frame that has the variables i'm interested in, then "print dbg->alloc_size" to get the size of the thing that got allocated
15:48 timotimo (vs "bytes" being the size it's trying to free)
15:48 dogbert17_ ok
15:49 dogbert17_ (gdb) print dbg->alloc_size
15:49 dogbert17_ $1 = 12
15:50 dogbert17_ (gdb) print bytes
15:50 dogbert17_ $2 = 8
15:50 timotimo i need to be AFK for a bit, but do we have a valgrind output that also shows where that mismatched thing was allocated?
15:51 dogbert17_ I'll try to get that
15:53 timotimo so ... what the hell is changing the num_entries between allocating and freeing?
15:53 Ven_ joined #perl6-dev
15:54 japhb nine: Committing a partial fix for the USAGE problem convinced you to make a complete fix so ... WAI?  ;-)
15:59 nine japhb: err.....got me there
16:01 viki m: ^3 .map: "subset Foo$_ where \$_ == $_".EVAL;
16:01 camelia rakudo-moar 6bb882: OUTPUT«===SORRY!===␤Cannot find method 'count' on object of type NQPMu␤»
16:02 viki m: ^3 .map: ""
16:02 camelia rakudo-moar 6bb882: OUTPUT«===SORRY!===␤Cannot find method 'count' on object of type NQPMu␤»
16:06 viki oh, nm, it's that optimizer bug. The error is fine with it fixed
16:07 viki https://rt.perl.org/Ticket/Display.html?id=129790#ticket-history
16:08 dogbert17_ timotimo: https://gist.github.com/dogbert17/f92912dcecf83b29a3ec3f24e9944e56
16:08 psch j: ^3 .map: "subset Foo$_ where \$_ == $_".EVAL;
16:08 camelia rakudo-jvm 76b061: OUTPUT«===SORRY!===␤Method 'count' not found for invocant of class 'NQPMu'␤»
16:08 psch ah, right, optimizer bug :o
16:09 timotimo dogbert17_: is that without --valgrind in the Configure.pl step?
16:17 * dogbert17_ hides
16:18 dogbert17_ but yes, i didn't do that :(
16:18 dogbert17_ what does the --valgrind option do?
16:22 dogbert17_ I see no obvious difference in the output after having configured moar with --valgrind
16:26 dogbert17_ AFK
16:27 timotimo sorry, i gave you a total misdirection
16:28 timotimo what --valgrind does is completely undone by the size debug thing
16:38 jnthn Hm, something funny going on with NFG tries?
16:40 timotimo seems like. maybe only on 32bit linux systems
16:40 * psch thinks trie and try need differing plurals
16:41 timotimo agreed
16:42 jnthn We could trie to come up with one... :P
16:45 timotimo jnthn: the symptom is that somehow we're using a different size to alloc than to free a trie node ... but the size is calculated based on num_entries, and that shouldn't be able to change
16:45 timotimo so ... memory corruption?!
16:46 timotimo or maybe sizeof(NFGTrieEntry) changes during run-time :P
16:49 jnthn Odd indeed
16:59 dogbert17 I believe both RabidGravy and AlexDaniel have been suffering from MoarVM panics recently as well
16:59 timotimo yeah, they are doing multi-threaded stuff, i believe
17:00 dogbert17 so, did you want me to try an older version?
17:01 timotimo yes
17:01 dogbert17 which version
17:01 timotimo on moarvm you should see two merges i made recently
17:01 timotimo 0132729 ought to be good
17:01 timotimo latest nqp and rakudo will prevent you from running Configure on account of a very recent version requirement bump
17:01 timotimo so make sure you're not doing "git pull" in nqp or rakudo in the mean time
17:04 dogbert17 so, is it enough to just checkout 0132729 then
17:04 viki Was there a way to disable JIT? I wanna see if the bug is caused by it
17:05 jnthn MVM_JIT_DISABLE=1
17:05 viki Thanks
17:11 * viki dips toes into MoarVM code for the first time
17:11 viki brrr... the water is cold...
17:17 jnthn Well, much of it was implemented close to the baltic sea... :)
17:17 viki :)
17:22 jnthn Phew, think I've got a fix for the QUIT bug I found.
17:24 jnthn m: 'react { whenever Supply.from-list(gather { die }) { QUIT { default { say "handled" } } } }
17:24 camelia rakudo-moar 6bb882: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Unable to parse expression in single quotes; couldn't find final "'" ␤at <tmp>:1␤------> { QUIT { default { say "handled" } } } }⏏<EOL>␤    expecting any of:␤        single quotes␤        …»
17:24 jnthn m: react { whenever Supply.from-list(gather { die }) { QUIT { default { say "handled" } } } }
17:24 camelia rakudo-moar 6bb882: OUTPUT«handled␤Tried to get the result of a broken Promise␤  in block <unit> at <tmp> line 1␤␤Original exception:␤    Died␤      in block  at <tmp> line 1␤      in block <unit> at <tmp> line 1␤␤»
17:27 dalek rakudo/nom: c027e6a | jnthn++ | src/core/Supply.pm:
17:27 dalek rakudo/nom: Cope with quit handlers running asynchronously.
17:27 dalek rakudo/nom:
17:27 dalek rakudo/nom: We queue code up, therefore we can't rely on knowing the outcome of
17:27 dalek rakudo/nom: a QUIT block right away. Take follow-up actions at a time when we
17:27 dalek rakudo/nom: certainly have run the QUIT of a whenever.
17:27 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c027e6ac80
17:27 dalek roast: 2d7448c | jnthn++ | S17-supply/syntax.t:
17:27 dalek roast: Tests covering some QUIT phaser bugs.
17:27 dalek roast: review: https://github.com/perl6/roast/commit/2d7448c66a
17:36 dogbert17 joined #perl6-dev
17:39 hankache joined #perl6-dev
18:06 dalek rakudo/nom: e4d78c6 | jnthn++ | src/core/Proc/Async.pm:
18:06 dalek rakudo/nom: Use Supplier::Preserving in Proc::Async.
18:06 dalek rakudo/nom:
18:06 dalek rakudo/nom: I recently got bitten by this, when writing code that obtained stdout
18:06 dalek rakudo/nom: and stderr, put them in an object, did .start on the process, and then
18:06 dalek rakudo/nom: returned the object. The calling code then tapped the two supplies.
18:06 dalek rakudo/nom: This resulted in occasional hangs, since sometimes the output was
18:06 dalek rakudo/nom: produced sooner than the object's user tapped. We could argue that you
18:06 dalek rakudo/nom: Just Shouldn't Do This, but it's likely plenty of people will fall
18:06 dalek rakudo/nom: into this trap over time, and it's just how most supplies work
18:06 dalek rakudo/nom: anyway (you don't lose incoming packets on a Socket by not tapping
18:06 dalek rakudo/nom: soon enough for example). So, whack a `::Preserving` on it.
18:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e4d78c6b1e
18:08 jnthn heh, long commit message for a 10 char patch :P
18:09 timotimo :D
18:09 diakopter *whack*
18:09 jnthn I figure if I tripped over that, others will soon enough.
18:10 jnthn Hm, I should write a test for it too
18:10 arnsholt Indeed. For non-trivial thigs, short patches generally merit long commit messages
18:11 timotimo in general i'm worried that setting up pipelines of taps and such vs starting the thing that emits to those taps can in general be problematic
18:11 arnsholt (And everything merits a commit message. Something I wish my old boss would've understood)
18:11 timotimo "Fix things."
18:12 arnsholt Heck, that'd be better than no message at all =)
18:12 timotimo "-"
18:13 [Coke] git commit -m "update frob.c" frob.c
18:13 timotimo for when your SCM won't allow empty messages
18:14 jnthn My favorite was a guy who just put his name as the commit message. On all of this commits. :P
18:14 timotimo lovely
18:14 arnsholt GAH! Murderation!
18:14 timotimo you could make a different email address for each commit, and add the commit message to the "comment" section of your email address
18:23 dalek roast: 4ed92b5 | jnthn++ | S17-procasync/basic.t:
18:23 dalek roast: Cover data-loss fix to Proc::Async.
18:23 dalek roast: review: https://github.com/perl6/roast/commit/4ed92b54b0
18:26 japhb .oO( timotimo+fixed@ )
18:27 [TuxCM] viki, I saw. Thanks all ya folk for speedy action
18:27 yoleaux2 14:14Z <viki> [TuxCM]: bug fixed and I replied on PerlMongers letting that person know. RE: http://www.perlmonks.org/?node_id=1176379
18:31 FROGGS joined #perl6-dev
18:32 [Coke] btw, perl6 seems to get many questions at stackoverflow, which I would recommend over perlmonks to people.
18:33 FROGGS o/
18:46 cognominal joined #perl6-dev
19:07 dalek rakudo/nom: f928a20 | jnthn++ | src/core/Supply.pm:
19:07 dalek rakudo/nom: Never run operations after supply deactivation.
19:07 dalek rakudo/nom:
19:07 dalek rakudo/nom: Once a supply/react block is done, quit, or closed, we should never
19:07 dalek rakudo/nom: emit any further messages (to meet the sane supply protocol). This
19:07 dalek rakudo/nom: could happen thanks to other code already being queued up to run.
19:07 dalek rakudo/nom: Now, always check we're still active before putting code into the
19:07 dalek rakudo/nom: queue or running code from the queue.
19:07 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f928a2077d
19:08 dalek roast: 3836292 | jnthn++ | S17-supply/syntax.t:
19:08 dalek roast: Test to cover RT #128991.
19:08 dalek roast: review: https://github.com/perl6/roast/commit/3836292c6d
19:08 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128991
19:12 jnthn Enough fixes for today :)
19:13 kalkin- joined #perl6-dev
19:13 kalkin- hi
19:13 viki \o\
19:13 kalkin- :)
19:14 kalkin- left #perl6-dev
19:14 kalkin- joined #perl6-dev
19:20 [Coke] jnthn++
20:21 moritz is there an easy-ish way to inspect the topo-sorted candidates of a multi?
20:22 viki "topo-sorted"?
20:23 viki m: .say for &say.^cando(42)
20:23 camelia rakudo-moar f928a2: OUTPUT«No such method 'cando' for invocant of type 'Perl6::Metamodel::ClassHOW'␤  in block <unit> at <tmp> line 1␤␤»
20:23 viki m: .say for &say.cando(42)
20:23 camelia rakudo-moar f928a2: OUTPUT«Type check failed in binding to $c; expected Capture but got Int (42)␤  in block <unit> at <tmp> line 1␤␤»
20:23 viki m: .say for &say.cando(\(42))
20:23 camelia rakudo-moar f928a2: OUTPUT«sub say (\x) { #`(Sub|65266432) ... }␤sub say (**@args is raw) { #`(Sub|65266584) ... }␤»
20:23 moritz viki: that candidates are topolocially sorted at compile time
20:24 moritz and I'd like to inspect the result of that sorting
20:25 moritz (nothing super important)
20:25 viki m: .say for &say.'!sort_dispatchees_internal'()
20:25 camelia rakudo-moar f928a2: OUTPUT«Cannot find method 'WHICH': no method cache and no .^find_method␤  in block <unit> at <tmp> line 1␤␤»
20:27 viki m: use nqp; .<signature>.gist.say for &say.'!sort_dispatchees_internal'()
20:27 camelia rakudo-moar f928a2: OUTPUT«()␤(Str:D \x)␤Cannot resolve caller postcircumfix:<{ }>(Mu, "signature"); none of these signatures match:␤    (\SELF, \key)␤    (\SELF, \key, Mu \ASSIGN)␤    (\SELF, \key, Mu :$BIND! is raw)␤    (\SELF, \key, :$delete!, *%other)␤    (\SELF, \…»
20:27 viki ah, right, you need to skip the Mus
20:28 viki m: use nqp; .<signature>.gist.say for &say.'!sort_dispatchees_internal'().grep: *.defined
20:28 camelia rakudo-moar f928a2: OUTPUT«()␤(Str:D \x)␤(\x)␤(**@args is raw)␤»
20:28 viki m: .<signature>.gist.say for &push.'!sort_dispatchees_internal'().grep: *.defined
20:28 camelia rakudo-moar f928a2: OUTPUT«Cannot iterate object with P6opaque representation (Scalar)␤  in block <unit> at <tmp> line 1␤␤»
20:28 viki /o\
20:30 viki ah, I think it's 'cause it's not a multi
20:31 viki m: .<signature>.gist.say for [].^lookup('splice').'!sort_dispatchees_internal'().grep: *.defined
20:31 camelia rakudo-moar f928a2: OUTPUT«(Array:D \SELF: *%_)␤(Array:D $: Whatever, *%_)␤(Array:D $: Callable:D $offset, *%_)␤(Array:D $: Int:D $offset, *%_)␤(Array:D $: Whatever, Whatever, *%_)␤(Array:D $: Whatever, Int:D $size, *%_)␤(Array:D $: Whatever, Callable:D $size, *%_)␤(Ar…»
20:31 viki \o/
20:31 viki moritz: so prolly something like that.
20:32 viki If you close your eyes on words "internal" :D
20:32 viki s: &say, 'candidates', \()
20:32 SourceBaby viki, Sauce is at https://github.com/rakudo/rakudo/blob/f928a20/src/core/Routine.pm#L25
20:36 viki Oh, there's actually a public-lier method for it: sort_dispatchees
20:46 moritz viki: thanks
20:56 dalek nqp: b9500f3 | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/FileHandle.java:
20:56 dalek nqp: Reset readBuffer after changing position in file
20:56 dalek nqp:
20:56 dalek nqp: Makes fudged test in S32-io/open.t pass
20:56 dalek nqp: review: https://github.com/perl6/nqp/commit/b9500f3cc7
20:56 dalek nqp: f153d1f | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/SyncHandle.java:
20:56 dalek nqp: Avoid potential BufferUnderflowException
20:56 dalek nqp:
20:56 dalek nqp: Some instructions later we call readBuffer.get(), so we
20:56 dalek nqp: make sure that there is something to get from readBuffer.
20:56 dalek nqp: review: https://github.com/perl6/nqp/commit/f153d1f412
20:56 dalek nqp: a2910fe | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/SyncHandle.java:
20:56 dalek nqp: Reset CharsetDecoder (might have been used before)
20:56 dalek nqp:
21:21 dalek roast: 1dce604 | usev6++ | S32-str/numeric.t:
21:21 dalek roast: Unfudge test for RT #128542 on JVM
21:21 dalek roast: review: https://github.com/perl6/roast/commit/1dce604264
21:21 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128542

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary