viki | FWIW, there's a probably "controvercial" PR on changing what sub MAIN Usage message looks like. If anyone wants to weigh in: github.com/rakudo/rakudo/pull/926 | 00:16 | |
dalek | kudo/nom: f544e4c | samcv++ | src/core/REPL.pm: Fix add history for readline, since the method is called add-history, it's the function that's called add_history |
00:38 | |
kudo/nom: 717a84d | (Zoffix Znet)++ | src/core/REPL.pm: Merge pull request #927 from samcv/nom Fix add history for readline, since the method is called add-history,… |
|||
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:40 | |
err. is there already a 'command'? | 00:41 | ||
and it gets that instead of the full thing when you do $*PROG-NAME ? | |||
ah. that's probably what it's doing then? if so then that's probably a good thing | 00:42 | ||
tho $*PROG-NAME implies it's the program's name, not the command name? | |||
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:45 | ||
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 | ||
that is actually running at that point | |||
viki | With the idea being that since the user managed to get to the usage screen, they already know what program they're running | ||
samcv | ah. ok | ||
viki | m: say $*CMD-NAME | 00:47 | |
camelia | rakudo-moar 689da7: OUTPUT«Dynamic variable $*CMD-NAME not found in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
samcv | but this wouldn't change the $*PROG-NAME variable right? | ||
only change the auto-help output? | |||
viki | right | ||
samcv | ok then ++ | ||
viki | Just the output | ||
samcv | very good | ||
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. | 00:56 | |
dalek | kudo/nom: 1369de9 | (Bahtiar `kalkin-` Gadimov)++ | src/core/Main.pm: Usage replace $*PROG-NAME with literal “command” |
01:11 | |
kudo/nom: 6ee524c | (Zoffix Znet)++ | src/core/Main.pm: Merge pull request #926 from kalkin/nom Usage replace $*PROG-NAME with literal “command” |
|||
samcv | zef --at | 06:03 | |
Usage: | |||
command [--force (False True)] fetch [<identities> ...] -- Download specific distributions | |||
ah so it literally says 'command' now. not any other value | |||
nine | FWIW I'd have NACKed the PR as a much better solution would not have been all that difficult | 06:11 | |
[TuxCM] | www.perlmonks.org/?node_id=1176379 needs an answer | 06:42 | |
samcv | nine, NACK? | 06:46 | |
negative ACK? | 06:47 | ||
nine | samcv: I'd much rather have it display the original command's name instead of the confusing 'command' | ||
samcv | yeah. | ||
nine | samcv: oh, yes NOT ACK | 06:48 | |
samcv | same | ||
[TuxCM] | This is Rakudo version 2016.11-37-g6ee524c built on MoarVM version 2016.11-8-gb582aeb | 06:53 | |
csv-ip5xs 3.278 | |||
test 13.706 | |||
test-t 6.500 | |||
csv-parser 14.111 | |||
samcv | nine, ␕ there's a unicode symbol for that apparently | 06:58 | |
nine | samcv: now would be a good time to have a better font for my terminal :) | 07:00 | |
samcv | heh | ||
what terminal do you use? | |||
nine | konsole | ||
samcv | well it's kinda small anywhere really. i mean can you see it? just small? | 07:01 | |
or not see it at all | |||
nine | Actually yes :) | 07:02 | |
s/a better font for my terminal/extremely high resolution display/ | 07:03 | ||
samcv | ah | 07:04 | |
dalek | kudo/nom: b597b7c | niner++ | src/core/ (2 files): Show original program name in MAIN_HELPER instead of 'command' Installed scripts are stored as resources in a CompUnit::Repository::Installation and called via a wrapper script stored in path. $*PROGRAM-NAME contains the path to the resource while the user should only have to deal with the wrapper script. So use an environment variable to override $*PROGRAM-NAME in that case and show the wrapper script's path in MAIN_HELPER error messages instead. |
07:06 | |
nine | There, that wasn't so bad at all :) | ||
samcv | nine, hmm that didn't work for me | 07:18 | |
getting the full name of the file | 07:19 | ||
unless i need to do a make clean or something | |||
ugexe | that fixes the sha1 name, but not the full path when shadowed (usually by rakudobrew/bin wrappers) | 07:21 | |
samcv | doing `zef --what` i get | 07:24 | |
nine | samcv: need to reinstall zef | 07:30 | |
to get the updated wrapper script | |||
samcv | ah ok :) | 07:42 | |
nine++ :) awesome | 07:48 | ||
nine, curious, what was the reason that hashes were chosen instead of file names for perl 6 modules? | 10:01 | ||
nine | samcv: full story starting at page 20: niner.name/talks/A%20look%20behind%...rl%206.pdf | 10:08 | |
samcv: keywords: Unicode on file systems and versioning | 10:09 | ||
samcv | thanks | 10:23 | |
psch | oh phooey. inheriting from (at least abstract) Java classes is another thing we probably want, isn't it... | 10:29 | |
that's gonna be fun | |||
hmm, parts of that might fall out from 'does'-able java Interfaces... | 10:33 | ||
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:34 | ||
...what a mess :S | 10:35 | ||
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:38 | ||
viki | [TuxCM]: answer that perlmonks isn't the right place to ask about Perl 6 and tell them to come to our IRC. | 11:05 | |
m: my @list = (1, 2|3, 4); say any(2,3) + 2 | 11:06 | ||
camelia | rakudo-moar b597b7: OUTPUT«any(4, 5)» | ||
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» | ||
viki | m: my @list = (1, 2|3, 4); my $sum; $sum += $_ for @list; say $sum | ||
camelia | rakudo-moar b597b7: OUTPUT«any(7, 8)» | ||
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))» | ||
viki | m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list; | ||
camelia | ( no output ) | ||
viki | m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list; say $sum | ||
camelia | rakudo-moar b597b7: OUTPUT«any(any(107, 207), any(108, 208))» | ||
viki | m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list; say $sum ~~ 108 | ||
camelia | rakudo-moar b597b7: OUTPUT«True» | ||
viki | m: my @list = (1, 2|3, 4, 100|200); my $sum; $sum += $_ for @list; say $sum ~~ 207 | ||
camelia | rakudo-moar b597b7: OUTPUT«True» | ||
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:09 | |
[TuxCM]: and while you at it, tell that 1nickt guy to go and fuck himself. | 11:10 | ||
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:18 | |
psch | arnsholt: well, i think the way it's being handle for overloaded methods and constructors works okay-ish | 11:19 | |
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 | |||
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:20 | ||
*on an interop wrapper | 11:26 | ||
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;)» | ||
psch | j: use java::lang::String:from<JavaRuntime>; say +(String.^methods.grep({.name ~~ /constructor/})) # | ||
camelia | ( no output ) | ||
psch | j: use java::lang::String:from<JavaRuntime>; say +(String.^methods.grep({.name ~~ /constructor/})) | ||
camelia | rakudo-jvm 76b061: OUTPUT«15» | ||
psch | the second is the number of constructors | ||
and the invokedynamic FALLBACK in BootJavaInterop is called for the mmd+new method, which dispatches between those constructors | 11:29 | ||
arnsholt: does that answer your question? :) | 11:32 | ||
arnsholt | psch: Mostly, I think =) | 11:34 | |
Hopefully it'll be a marginal issue in practice anyways | |||
psch | my advent post from 2014 goes into a bit more detail i think, though probably not on the technical side | 11:35 | |
i *think* the code in BootJavaInterop and RakudoJavaInterop is pretty clear, but then i've also spend a lot of time with it... :) | |||
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 | 12:53 | |
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.» | ||
viki kinda expected for !== to be auto-generated, since "!" is a metaop and all other metaops get autogenerated | |||
dogbert17_ dogbert17 is currently hiding at $work which complicates things :( | 13:35 | ||
dalek | ast: 8c72fdd | (Zoffix Znet)++ | packages/Test/Util.pm: Add is-deeply-junction to Test::Util is-deeply-junction( Junction $got, Junction $expected, Str:D $desc) Guts two junctions and uses C<is-deeply> test on those guts. Use to compare two Junctions for equivalence. I<Note:> this test is rather strict and will fail even if the two Junctions are functionally equivalent, for example 1|2 and 2|1 are considered to be different Junctions. |
14:03 | |
kudo/nom: 8d04bec | (Zoffix Znet)++ | src/core/List.pm: Remove `Numeric` type restriction for .sum() Numerics aren't the only types we can end up with: there are also Junctions Spotted by m_turner++ on www.perlmonks.org/?node_id=1176379 |
14:10 | ||
ast: 8362015 | (Zoffix Znet)++ | S02-types/list.t: Test Junctions work with .sum/[+] Test for fix in commit: github.com/rakudo/rakudo/commit/8d...a34acc8def |
|||
viki | .tell [TuxCM] bug fixed and I replied on PerlMongers letting that person know. RE: www.perlmonks.org/?node_id=1176379 | 14:14 | |
yoleaux2 | viki: I'll pass your message to [TuxCM]. | ||
dalek | p: 70724a2 | jnthn++ | tools/build/MOAR_REVISION: Bump MOAR_REVISION for new captureinnerlex op. |
14:40 | |
p: c62785f | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: Map MoarVM captureinnerlex op. |
|||
dogbert17_ | timotimo: can you try: ./perl6 -I lib t/spec/S04-declarations/constant.rakudo.moar this panics for me | ||
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…» | ||
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] | ||
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'» | ||
timotimo | dogbert17_: ok 70 - Operator multi defined on comet works using snowman | 14:51 | |
# FUDGED! | |||
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 1Original exception: Type check failed in binding to value; expected Any but got Mu (Mu) in block <unit> at <tmp> line 1» | ||
dogbert17_ | timotimo: so it worked for you, sigh | 14:55 | |
timotimo | yes, that's the problem | 14:56 | |
my spec tests are clean | |||
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 | ||
camelia | rakudo-moar 8d04be: OUTPUT«===SORRY!=== Error while compiling <tmp>Missing blockat <tmp>:1------> Supply.from-list(gather { die }) { QUIT⏏ emit $a } } }; is await(foo(42)), 42; i expecting any of: scoped block» | ||
timotimo | except, i don't think i have it compiled with --valgrind or with the FSA size debug | ||
dogbert17_ | then I'll try the breakpoint thingy when I get home, where should I put the breakpoint? | ||
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 | ||
camelia | rakudo-moar 8d04be: OUTPUT«Tried to get the result of a broken Promise in block <unit> at <tmp> line 1Original 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» | ||
timotimo | now i have FSA size debug turned on and it doesn't panic | 14:57 | |
dogbert17_ | was it the flag I tested yesterday? | ||
timotimo | yes | 14:58 | |
dogbert17_ | and you're on 64 bit I guess | ||
timotimo | yup | ||
dogbert17_ | grrr :) | ||
so where is this panic routine where I should put a breakpoint then? | 14:59 | ||
timotimo | are you aware that gdb lets you just say "break MVM_panic"? | 15:00 | |
dogbert17_ | no I wasn't. you learn something new every day :) | 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 | |||
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 | ||
IMO, it's many times worse than git | 15:08 | ||
|Tux| | This blogger wants perl6 - blog.builtinperl.com/post/7-feature...-in-perl-5 | 15:12 | |
DrForr | This blogger also sits a few desks away from me :) | 15:14 | |
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:16 | ||
timotimo | how is Moose not good enough ... | 15:17 | |
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:18 | |
dalek | kudo/nom: 4bec146 | jnthn++ | tools/build/NQP_REVISION: Get NQP/MoarVM with captureinnerlex op. |
15:19 | |
kudo/nom: 6bb8823 | jnthn++ | src/Perl6/ (2 files): Fix various scoping bugs with NEXT/LAST/QUIT. These showed up under recursion and also in concurrent programs, and were the cause of many crashes involving supply/react blocks that used LAST and QUIT. Proc::Async in chars mode was vulnerable to this bug, for example. |
|||
ugexe | in these cases its really 'developer not perl6 production ready' | ||
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:20 | |
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. | ||
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 | ||
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? | ||
timotimo | yup | ||
dogbert17_ | gist.github.com/dogbert17/6dbc29f5...a89d1166da | ||
dalek | ast: b7c19a8 | jnthn++ | S17-procasync/encoding.t: Unfudge now-passing tests. |
15:27 | |
ast: 77be933 | jnthn++ | S04-phasers/in-loop.t: Add test for phasers in loops + recursion. |
|||
ast: 8265429 | jnthn++ | S17-supply/syntax.t: Test LAST in whenever that never iterates. |
15:28 | ||
timotimo | but i was hoping to get an error of the "wrong size used to free" variety | 15:29 | |
jnthn | A break, then onto the next bug hunt... | 15:30 | |
timotimo | a break, then a continue. but please not a last :) | 15:32 | |
dogbert17_ | ah, the debugflag was zero again, lemme fix | 15:34 | |
timotimo: now I got it: gist.github.com/dogbert17/069f700e...8464330f35 | 15:38 | ||
timotimo | ok, this is about the NFG trie, then | ||
i haven't looked at this thing even once ;( | |||
but i recognize the string it's trying to decode | 15:39 | ||
it's our big list of "what character has what successor" | |||
and it's part of what we decode on every startup | |||
i recently made changes to MVM_cu_obtain_string; could you check out a moarvm before that, please? | |||
oh, before you change out of this | 15:40 | ||
could you print the correct and wrong sizes inside MVM_fixed_size_free_at_safepoint there? | |||
dogbert17_ | you mean in src/core/fixedsizealloc.c | 15:41 | |
timotimo | yeah, stack frame #1 | 15:42 | |
i.e. "frame 1" "print dbg->alloc_size" "print bytes" | |||
except bytes is already in the function signature, so not really needing printing | |||
dogbert17_ | does MVM_panic take sprintf like format strings? | 15:43 | |
timotimo | yes, it does | ||
... i think? | |||
yes, it does | |||
but i was hoping you'd just do it in gdb so you don't have to recompile :) | 15:44 | ||
dogbert17_ | ah, you mean look at the vars with some inspect cmd? | 15:46 | |
timotimo | with exactly the commands i wrote on irc :) | 15:47 | |
"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 | ||
(vs "bytes" being the size it's trying to free) | |||
dogbert17_ | ok | ||
(gdb) print dbg->alloc_size | 15:49 | ||
$1 = 12 | |||
(gdb) print bytes | 15:50 | ||
$2 = 8 | |||
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? | ||
dogbert17_ | I'll try to get that | 15:51 | |
timotimo | so ... what the hell is changing the num_entries between allocating and freeing? | 15:53 | |
japhb | nine: Committing a partial fix for the USAGE problem convinced you to make a complete fix so ... WAI? ;-) | 15:54 | |
nine | japhb: err.....got me there | 15:59 | |
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» | ||
viki | m: ^3 .map: "" | 16:02 | |
camelia | rakudo-moar 6bb882: OUTPUT«===SORRY!===Cannot find method 'count' on object of type NQPMu» | ||
viki | oh, nm, it's that optimizer bug. The error is fine with it fixed | 16:06 | |
rt.perl.org/Ticket/Display.html?id...et-history | 16:07 | ||
dogbert17_ | timotimo: gist.github.com/dogbert17/f92912dc...24e9944e56 | 16:08 | |
psch | j: ^3 .map: "subset Foo$_ where \$_ == $_".EVAL; | ||
camelia | rakudo-jvm 76b061: OUTPUT«===SORRY!===Method 'count' not found for invocant of class 'NQPMu'» | ||
psch | ah, right, optimizer bug :o | ||
timotimo | dogbert17_: is that without --valgrind in the Configure.pl step? | 16:09 | |
dogbert17_ hides | 16:17 | ||
but yes, i didn't do that :( | 16:18 | ||
what does the --valgrind option do? | |||
I see no obvious difference in the output after having configured moar with --valgrind | 16:22 | ||
AFK | 16:26 | ||
timotimo | sorry, i gave you a total misdirection | 16:27 | |
what --valgrind does is completely undone by the size debug thing | 16:28 | ||
jnthn | Hm, something funny going on with NFG tries? | 16:38 | |
timotimo | seems like. maybe only on 32bit linux systems | 16:40 | |
psch thinks trie and try need differing plurals | |||
timotimo | agreed | 16:41 | |
jnthn | We could trie to come up with one... :P | 16:42 | |
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 | |
so ... memory corruption?! | |||
or maybe sizeof(NFGTrieEntry) changes during run-time :P | 16:46 | ||
jnthn | Odd indeed | 16:49 | |
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 | ||
dogbert17 | so, did you want me to try an older version? | 17:00 | |
timotimo | yes | 17:01 | |
dogbert17 | which version | ||
timotimo | on moarvm you should see two merges i made recently | ||
0132729 ought to be good | |||
latest nqp and rakudo will prevent you from running Configure on account of a very recent version requirement bump | |||
so make sure you're not doing "git pull" in nqp or rakudo in the mean time | |||
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 | ||
jnthn | MVM_JIT_DISABLE=1 | 17:05 | |
viki | Thanks | ||
viki dips toes into MoarVM code for the first time | 17:11 | ||
brrr... the water is cold... | |||
jnthn | Well, much of it was implemented close to the baltic sea... :) | 17:17 | |
viki | :) | ||
jnthn | Phew, think I've got a fix for the QUIT bug I found. | 17:22 | |
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 …» | ||
jnthn | m: react { whenever Supply.from-list(gather { die }) { QUIT { default { say "handled" } } } } | ||
camelia | rakudo-moar 6bb882: OUTPUT«handledTried to get the result of a broken Promise in block <unit> at <tmp> line 1Original exception: Died in block at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
dalek | kudo/nom: c027e6a | jnthn++ | src/core/Supply.pm: Cope with quit handlers running asynchronously. We queue code up, therefore we can't rely on knowing the outcome of a QUIT block right away. Take follow-up actions at a time when we certainly have run the QUIT of a whenever. |
17:27 | |
ast: 2d7448c | jnthn++ | S17-supply/syntax.t: Tests covering some QUIT phaser bugs. |
|||
kudo/nom: e4d78c6 | jnthn++ | src/core/Proc/Async.pm: Use Supplier::Preserving in Proc::Async. I recently got bitten by this, when writing code that obtained stdout and stderr, put them in an object, did .start on the process, and then returned the object. The calling code then tapped the two supplies. This resulted in occasional hangs, since sometimes the output was produced sooner than the object's user tapped. We could argue that you Just Shouldn't Do This, but it's likely plenty of people will fall into this trap over time, and it's just how most supplies work anyway (you don't lose incoming packets on a Socket by not tapping soon enough for example). So, whack a `::Preserving` on it. |
18:06 | ||
jnthn | heh, long commit message for a 10 char patch :P | 18:08 | |
timotimo | :D | 18:09 | |
diakopter | *whack* | ||
jnthn | I figure if I tripped over that, others will soon enough. | ||
Hm, I should write a test for it too | 18:10 | ||
arnsholt | Indeed. For non-trivial thigs, short patches generally merit long commit messages | ||
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) | ||
timotimo | "Fix things." | ||
arnsholt | Heck, that'd be better than no message at all =) | 18:12 | |
timotimo | "-" | ||
[Coke] | git commit -m "update frob.c" frob.c | 18:13 | |
timotimo | for when your SCM won't allow empty messages | ||
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 | ||
arnsholt | GAH! Murderation! | ||
timotimo | you could make a different email address for each commit, and add the commit message to the "comment" section of your email address | ||
dalek | ast: 4ed92b5 | jnthn++ | S17-procasync/basic.t: Cover data-loss fix to Proc::Async. |
18:23 | |
japhb | .oO( timotimo+fixed@ ) |
18:26 | |
[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: www.perlmonks.org/?node_id=1176379 | ||
[Coke] | btw, perl6 seems to get many questions at stackoverflow, which I would recommend over perlmonks to people. | 18:32 | |
FROGGS | o/ | 18:33 | |
dalek | kudo/nom: f928a20 | jnthn++ | src/core/Supply.pm: Never run operations after supply deactivation. Once a supply/react block is done, quit, or closed, we should never emit any further messages (to meet the sane supply protocol). This could happen thanks to other code already being queued up to run. Now, always check we're still active before putting code into the queue or running code from the queue. |
19:07 | |
ast: 3836292 | jnthn++ | S17-supply/syntax.t: Test to cover RT #128991. |
19:08 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128991 | ||
jnthn | Enough fixes for today :) | 19:12 | |
kalkin- | hi | 19:13 | |
viki | \o\ | ||
kalkin- | :) | ||
[Coke] | jnthn++ | 19:20 | |
moritz | is there an easy-ish way to inspect the topo-sorted candidates of a multi? | 20:21 | |
viki | "topo-sorted"? | 20:22 | |
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» | ||
viki | m: .say for &say.cando(42) | ||
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» | ||
viki | m: .say for &say.cando(\(42)) | ||
camelia | rakudo-moar f928a2: OUTPUT«sub say (\x) { #`(Sub|65266432) ... }sub say (**@args is raw) { #`(Sub|65266584) ... }» | ||
moritz | viki: that candidates are topolocially sorted at compile time | ||
and I'd like to inspect the result of that sorting | 20:24 | ||
(nothing super important) | 20:25 | ||
viki | m: .say for &say.'!sort_dispatchees_internal'() | ||
camelia | rakudo-moar f928a2: OUTPUT«Cannot find method 'WHICH': no method cache and no .^find_method in block <unit> at <tmp> line 1» | ||
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, \…» | ||
viki | ah, right, you need to skip the Mus | ||
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)» | ||
viki | m: .<signature>.gist.say for &push.'!sort_dispatchees_internal'().grep: *.defined | ||
camelia | rakudo-moar f928a2: OUTPUT«Cannot iterate object with P6opaque representation (Scalar) in block <unit> at <tmp> line 1» | ||
viki | /o\ | ||
ah, I think it's 'cause it's not a multi | 20:30 | ||
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…» | ||
viki | \o/ | ||
moritz: so prolly something like that. | |||
If you close your eyes on words "internal" :D | 20:32 | ||
s: &say, 'candidates', \() | |||
SourceBaby | viki, Sauce is at github.com/rakudo/rakudo/blob/f928...ine.pm#L25 | ||
viki | Oh, there's actually a public-lier method for it: sort_dispatchees | 20:36 | |
moritz | viki: thanks | 20:46 | |
dalek | p: b9500f3 | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/FileHandle.java: Reset readBuffer after changing position in file Makes fudged test in S32-io/open.t pass |
20:56 | |
p: f153d1f | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/SyncHandle.java: Avoid potential BufferUnderflowException Some instructions later we call readBuffer.get(), so we make sure that there is something to get from readBuffer. |
|||
nqp: a2910fe | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/SyncHandle.java: | |||
nqp: Reset CharsetDecoder (might have been used before) | |||
nqp: | |||
ast: 1dce604 | usev6++ | S32-str/numeric.t: Unfudge test for RT #128542 on JVM |
21:21 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128542 |