Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm Set by Zoffix on 27 July 2018. |
|||||||||||||||||||||||||||||||||||||||
vrurg | .tell patrickb It's been totally crazy last two weeks for me. Will try to find some time over the weekend. | 01:46 | |||||||||||||||||||||||||||||||||||||
yoleaux | vrurg: I'll pass your message to patrickb. | ||||||||||||||||||||||||||||||||||||||
02:15
MasterDuke left
|
|||||||||||||||||||||||||||||||||||||||
vrurg | Hm, looks like I've got CORE setting loading and binding on dynamic/chained pseudo stashes... | 02:32 | |||||||||||||||||||||||||||||||||||||
03:56
BeastieBot left
04:16
BeastieBot joined
06:07
lizmat left
06:39
lizmat joined
07:01
lizmat left
07:12
MasterDuke joined
07:26
vrurg left
09:44
Kaiepi left
09:45
Kaiepi joined
10:01
Kaiepi left
10:05
Kaiepi joined
10:21
Kaiepi left,
Kaiepi joined
10:38
Kaiepi left
10:39
Kaiepi joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | squashable6: status | 11:15 | |||||||||||||||||||||||||||||||||||||
squashable6 | AlexDaniel, 🍕🍕 SQUASHathon is in progress! The end of the event in 1 day and ≈2 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||||||||||||||||||||||||||||||||||||||
11:34
|Tux| joined
12:14
|Tux| left,
|Tux| joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | .tell lizmat another weird bug: github.com/ajs/perl6-Math-Sequences/issues/47 | 12:23 | |||||||||||||||||||||||||||||||||||||
yoleaux | AlexDaniel: I'll pass your message to lizmat. | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | .tell lizmat (with the same code) | ||||||||||||||||||||||||||||||||||||||
yoleaux | AlexDaniel: I'll pass your message to lizmat. | ||||||||||||||||||||||||||||||||||||||
Kaiepi | bastille% perl6 test.p6 | 13:08 | |||||||||||||||||||||||||||||||||||||
Converting 😂 to a wide string... | |||||||||||||||||||||||||||||||||||||||
4 wide characters | |||||||||||||||||||||||||||||||||||||||
4 elements after converting | |||||||||||||||||||||||||||||||||||||||
slowly getting there... | |||||||||||||||||||||||||||||||||||||||
that should be 2 though | |||||||||||||||||||||||||||||||||||||||
i feel like i'm missing bits and pieces in moar and rakudo | |||||||||||||||||||||||||||||||||||||||
13:12
Tux__ joined,
|Tux| left
13:52
Tux__ left
13:54
Tux__ joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | i wonder what exactly makes my code cause the scheduler to kick its heuristic deadlock detection into high gear and asplode to perhaps maximum thread count in just a few moments | 14:09 | |||||||||||||||||||||||||||||||||||||
Kaiepi | i was right about stuff missing, i'm missing code to deal with passing wide strings to nativecall and handle encoding them properly with it | 14:10 | |||||||||||||||||||||||||||||||||||||
MasterDuke | maybe one of the heuristics is '$username.contains("timo")'? | 14:11 | |||||||||||||||||||||||||||||||||||||
Kaiepi | how much work would be involved in writing that? | ||||||||||||||||||||||||||||||||||||||
timotimo | nah, it stops | ||||||||||||||||||||||||||||||||||||||
Kaiepi | sorry if i interrupted | ||||||||||||||||||||||||||||||||||||||
timotimo | i mean it stops adding more workers before RAKUDO_MAX_THREADS is reached | 14:12 | |||||||||||||||||||||||||||||||||||||
if that's even what that variable is called | |||||||||||||||||||||||||||||||||||||||
Kaiepi | it is | 14:13 | |||||||||||||||||||||||||||||||||||||
14:13
Tux__ left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | massively parallelizing work with nested promises and hypers; maybe not the greatest approach | 14:16 | |||||||||||||||||||||||||||||||||||||
14:16
Tux__ joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | i guess i probably don't need a hyper splitter and joiner task to parallelize over four or six rather heavy tasks | 14:16 | |||||||||||||||||||||||||||||||||||||
might as well try to await do for ... start | |||||||||||||||||||||||||||||||||||||||
14:19
HarmtH_ left,
HarmtH_ joined
14:21
HarmtH_ is now known as HarmtH
|
|||||||||||||||||||||||||||||||||||||||
timotimo | Kaiepi: i'm not sure where code like that would actually go | 14:23 | |||||||||||||||||||||||||||||||||||||
Kaiepi | i need to be able to transcode between c strings, wide strings, and MVMString | 14:24 | |||||||||||||||||||||||||||||||||||||
timotimo | i mean, rakudo already has a thing for when it passes a Str to a native sub and it causes an encoding to happen | 14:25 | |||||||||||||||||||||||||||||||||||||
Kaiepi | it does, but the problem is it uses MVMString to accomplish that | 14:26 | |||||||||||||||||||||||||||||||||||||
transcoding between c strings and wide strings is simple enough but idk about MVMStrings | |||||||||||||||||||||||||||||||||||||||
14:27
vrurg joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | for MVMString it's just an encoding step, no? | 14:28 | |||||||||||||||||||||||||||||||||||||
since MVMString doesn't care about wide/narrow | |||||||||||||||||||||||||||||||||||||||
it's all in the signature of the native sub | |||||||||||||||||||||||||||||||||||||||
14:41
[TuxCM] left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | bleh, the work needed for the references is so much slower that it dictates the total run time of the task :| | 14:43 | |||||||||||||||||||||||||||||||||||||
14:49
[TuxCM] joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | huh. 3/4 of the time, but about 25% less cpu used. what did i do, lol | 14:51 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | squashable6: status | 15:19 | |||||||||||||||||||||||||||||||||||||
squashable6 | AlexDaniel, 🍕🍕 SQUASHathon is in progress! The end of the event in ≈22 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Now with an issue tracker! github.com/ajs/perl6-Math-Sequences/issues | ||||||||||||||||||||||||||||||||||||||
timotimo | ha! 27s as compared to the 1:10 it sometimes was before | 15:49 | |||||||||||||||||||||||||||||||||||||
and it's below a gigabyte of ram usage, too | 15:50 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | nice | 15:53 | |||||||||||||||||||||||||||||||||||||
[Tux] |
|
16:14 | |||||||||||||||||||||||||||||||||||||
TreyHarris | Since "die" at the top-level of a program is no longer really congruent with Perl 5's, and it lacks the behavior of a newline at the end of the message string suppressing the backtrace, should there be sugar for "-> $msg { $msg.note and exit 1}" ? | 18:46 | |||||||||||||||||||||||||||||||||||||
For communicating human-interaction errors? | 18:47 | ||||||||||||||||||||||||||||||||||||||
vrurg | m: say MY::NoExists | 18:49 | |||||||||||||||||||||||||||||||||||||
camelia | Nil | ||||||||||||||||||||||||||||||||||||||
TreyHarris | Seems like a discussion topic, I'll throw it into a problem-solving issue | ||||||||||||||||||||||||||||||||||||||
vrurg | In roast MY::NotExists is exppected to throw. I just made it conform to roast and got broken build. | 18:50 | |||||||||||||||||||||||||||||||||||||
I wonder how many modules rely on current behavior? | 18:51 | ||||||||||||||||||||||||||||||||||||||
18:53
robertle joined
|
|||||||||||||||||||||||||||||||||||||||
vrurg | Great, ForeignCode doesn't conform to roast. ;) | 18:58 | |||||||||||||||||||||||||||||||||||||
18:59
lizmat joined
|
|||||||||||||||||||||||||||||||||||||||
vrurg | m: module Foo { }; say Foo::<NotExists> | 19:19 | |||||||||||||||||||||||||||||||||||||
camelia | (Any) | ||||||||||||||||||||||||||||||||||||||
vrurg | m: say MY::<NotExists> | ||||||||||||||||||||||||||||||||||||||
camelia | Nil | ||||||||||||||||||||||||||||||||||||||
vrurg | I'm lost. | 19:20 | |||||||||||||||||||||||||||||||||||||
TreyHarris | That's weird... did you bisect? | 19:27 | |||||||||||||||||||||||||||||||||||||
vrurg | TreyHarris: No, but I suspect it always was this way. | 19:29 | |||||||||||||||||||||||||||||||||||||
vrurg is creating a problem-solving case for this. | |||||||||||||||||||||||||||||||||||||||
TreyHarris | I just created github.com/perl6/problem-solving/issues/59 for the die-with-newline question. | 19:45 | |||||||||||||||||||||||||||||||||||||
ugexe | CATCH { default { try { ::("Rakudo::Internals").?LL-EXCEPTION } ?? .rethrow !! .message.¬e; &*EXIT(1) } } | 19:50 | |||||||||||||||||||||||||||||||||||||
thats what im using atm | |||||||||||||||||||||||||||||||||||||||
Geth | ¦ problem-solving: AlexDaniel assigned to jnthn Issue Need a substitute for Perl 5 die with newline for raising end-user errors? github.com/perl6/problem-solving/issues/59 | 19:51 | |||||||||||||||||||||||||||||||||||||
TreyHarris | ugexe: Yes, I actually considered changing die's example to something like that before submitting the problem-solving issue. I like the special exception class the best, though; if other do, I'm happy to write up a proposed class spec | 19:52 | |||||||||||||||||||||||||||||||||||||
But "Rakudo::Internals" is exactly correct, but also not something we mention in the Perl6 docs | |||||||||||||||||||||||||||||||||||||||
Er, no... nearly correct. Correct for CPAN modules. Not quite correct for executables. | 19:53 | ||||||||||||||||||||||||||||||||||||||
ugexe | its not required, it just puts the backtrace back in if --ll-exception is used | ||||||||||||||||||||||||||||||||||||||
timotimo | how about "quietly die 'oh no'" :P | 19:54 | |||||||||||||||||||||||||||||||||||||
ugexe | die :no-backtrace 'too much typing' | 19:55 | |||||||||||||||||||||||||||||||||||||
throw a comma in there | |||||||||||||||||||||||||||||||||||||||
timotimo | m: sub bloop { say %_; say @_ }; bloop "oh no" :no-backtrace | 19:56 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> You can't adverb "oh no" at <tmp>:1 ------> 3_; say @_ }; bloop "oh no" :no-backtrace7⏏5<EOL> expecting any of: pair value |
||||||||||||||||||||||||||||||||||||||
timotimo | m: sub bloop { say %_; say @_ }; bloop :no-backtrace "oh no" | ||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3 { say %_; say @_ }; bloop :no-backtrace7⏏5 "oh no" expecting any of: infix infix stopper postfix statement… |
||||||||||||||||||||||||||||||||||||||
timotimo | m: sub bloop { say %_; say @_ }; bloop("oh no"):no-backtrace | ||||||||||||||||||||||||||||||||||||||
camelia | {no-backtrace => True} [oh no] |
||||||||||||||||||||||||||||||||||||||
lizmat | .oO( exit 1, :message<Goodbye> } |
19:57 | |||||||||||||||||||||||||||||||||||||
TreyHarris | that's one of the things right there, though: user-oriented errors shouldn't be handled with say. | ||||||||||||||||||||||||||||||||||||||
lizmat: yes, could work except that you may want it to be catchable and you may not want to abort finalizers | |||||||||||||||||||||||||||||||||||||||
lizmat | exit doesn't abort finaloizers, afaik | 19:58 | |||||||||||||||||||||||||||||||||||||
TreyHarris | lizmat: oh? the exit docs say it does | ||||||||||||||||||||||||||||||||||||||
I didn't test it | |||||||||||||||||||||||||||||||||||||||
timotimo | finalizers are not guaranteed to run | ||||||||||||||||||||||||||||||||||||||
but that's not the same as END blocks | |||||||||||||||||||||||||||||||||||||||
lizmat | END blocks will be run with exit | ||||||||||||||||||||||||||||||||||||||
ugexe | well, if you want it to be catchable then using plain `die` seems silly | ||||||||||||||||||||||||||||||||||||||
timotimo | i actually wouldn't expect LEAVE blocks to be run from exit | ||||||||||||||||||||||||||||||||||||||
lizmat | m: END say "goodbye"; exit 1 | ||||||||||||||||||||||||||||||||||||||
camelia | goodbye | ||||||||||||||||||||||||||||||||||||||
TreyHarris | user-oriented errors should at the very least go to $*ERR, but mentioning $*ERR explicitly is kinda wrong too since you may want to intercept it for things like GUI's. | 19:59 | |||||||||||||||||||||||||||||||||||||
lizmat | m: LEAVE say "goodbye"; exit 1 | ||||||||||||||||||||||||||||||||||||||
camelia | ( no output ) | ||||||||||||||||||||||||||||||||||||||
lizmat | perhaps: "exit 1, :note<Foo Bar>" for message on STDERR | 20:00 | |||||||||||||||||||||||||||||||||||||
and "exit 1, :say<Too Bad>" for message on STDOUT | |||||||||||||||||||||||||||||||||||||||
TreyHarris | Well, exit is supposed to be extraordinary, I think... Saying, "erm, I can't write to that directory you told me to write to" isn't really extraordinary, it's just exceptional | 20:01 | |||||||||||||||||||||||||||||||||||||
timotimo | exitraordinary | ||||||||||||||||||||||||||||||||||||||
TreyHarris | One can't inject a top-level CATCH from another module, can one? After rejecting changing the docs but before going to problem-solving, I'd considered just writing an "X::UserError" module to throw up on CPAN but I couldn't figure out how to avoid requiring the CATCH in the caller. | 20:04 | |||||||||||||||||||||||||||||||||||||
ugexe | since you want it to be catchable then let the user remove the backtrace. otherwise anyone catching this has to handle detecting/acting-on this switch | ||||||||||||||||||||||||||||||||||||||
timotimo | let's introduce a differentiation like php has. it has fatal errors, errors, exceptions, crashes, and something else | 20:05 | |||||||||||||||||||||||||||||||||||||
lizmat | perhaps docs.perl6.org/language/variables#&*EXIT could be of use ? | ||||||||||||||||||||||||||||||||||||||
TreyHarris | Do they? I don't think so. I would think that library code should never encounter such an exception? | ||||||||||||||||||||||||||||||||||||||
ugexe | then you, the sole consumer of this, is the user | 20:06 | |||||||||||||||||||||||||||||||||||||
TreyHarris | I feel like there should be a way that doesn't involve an explicit top-level CATCH block, because it's too easy (especially in a case like this where one is doing selective action) to make a mistake. The very example in the docs doesn't work right | 20:09 | |||||||||||||||||||||||||||||||||||||
ugexe | but one would argue thats pushing the dev to do the right thing and use typed exceptions in the first place | 20:10 | |||||||||||||||||||||||||||||||||||||
TreyHarris | I did note that that would be one side-effect. If the answer to, "how do I get the perl5 die-with-newline behavior?" is, "used typed exceptions for those cases at least", that doesn't feel like a huge burden. | 20:11 | |||||||||||||||||||||||||||||||||||||
ugexe | the example i showed before was only needed because 1) i liked the backtrace but others thought it was too much 2) i was too lazy to refactor using typed exceptions. | ||||||||||||||||||||||||||||||||||||||
TreyHarris | So the die-with-newline was correct in one way: the place in the code where one is die'ing is the correct place to signal that this is an error that needs no debug information because it's a "normal exception". The problem was that the mechanism was unacceptably fugly and hard to generalize. | 20:14 | |||||||||||||||||||||||||||||||||||||
Having to deal with this in two places, both where the error is discovered and at the top level, seems like an avoidable burden | |||||||||||||||||||||||||||||||||||||||
ugexe | if die could default to no backtrace, and add a backtrace option i might be more inclined. or make a `trace` that dies with a backtrace. but as it exists now... i'm not sure any new options feel right | 20:15 | |||||||||||||||||||||||||||||||||||||
TreyHarris | Maybe exit with a non-Int could be hijacked for the purpose. | 20:17 | |||||||||||||||||||||||||||||||||||||
`exit "Can't write to directory $d";` or `exit X::UserError::DirectoryAccess(:dir($d));` | 20:18 | ||||||||||||||||||||||||||||||||||||||
exit's already a multi, so that's doable in CPAN now | |||||||||||||||||||||||||||||||||||||||
ugexe | i expect that i can recover from die, not exit | 20:19 | |||||||||||||||||||||||||||||||||||||
TreyHarris | er, my syntax was some other language's there, but I think it's clear what I meant... | ||||||||||||||||||||||||||||||||||||||
ugexe: right. I'm not sure one does want to catch such cases... I think you're being too clever by half if you do, like, "oh, there's no directory by that name and I just learned that by catching the DirectoryNoExisty exception, so I'll create it and retry" or whatever | 20:21 | ||||||||||||||||||||||||||||||||||||||
The main reason to "catch" them is to hijack the output when not running on standard I/O, and as lizmat pointed out, &*EXIT appears to exist for that very purpose | 20:22 | ||||||||||||||||||||||||||||||||||||||
ugexe | i used &*EXIT in my example :P | ||||||||||||||||||||||||||||||||||||||
although not in a very fancy way | 20:23 | ||||||||||||||||||||||||||||||||||||||
TreyHarris | I know, I said your CATCH was the sort of thing that should be made implicit for a class different from Rakudo::Internals | ||||||||||||||||||||||||||||||||||||||
But that was wrong anyway: &*EXIT is just for the exiting step (what right now is exit(Int:D $)), so it can't affect error output before it was called | 20:25 | ||||||||||||||||||||||||||||||||||||||
a different exit multi that got the output, like I outlined before, _could_ do that. So maybe I should just do that as a CPAN module and see how it feels | 20:26 | ||||||||||||||||||||||||||||||||||||||
ugexe | sure it can | ||||||||||||||||||||||||||||||||||||||
it can print \b a bunch of times | |||||||||||||||||||||||||||||||||||||||
TreyHarris | :UP | ||||||||||||||||||||||||||||||||||||||
er, very big nosed version of :-P | |||||||||||||||||||||||||||||||||||||||
ugexe | .tell patrickb I imagine we'll drop travis-ci and just use circle-ci eventually, but right now the familiarity of travis is still helpful to have around. as for testing e.g. reloc, names-with-spaces, etc these can probably be done with circle-ci using cron jobs that run specific jobs, but i dont think appveyor has anything beyond "run default branch nightly" | 20:37 | |||||||||||||||||||||||||||||||||||||
yoleaux | ugexe: I'll pass your message to patrickb. | ||||||||||||||||||||||||||||||||||||||
20:45
lizmat_ joined
20:49
lizmat left
20:53
lizmat_ is now known as lizmat
|