AlexDaniel | Zoffix: I just glanced over github.com/perl6/doc/commit/67cadad365 and generally it's an improvement in some way, but I think it's slightly incorrect. You say “the behaviour is a lot more predictable and avoidable than the prose suggests”, but I don't think that it is. Previously it said “You should always expect the C<LEAVE> phaser to be executed before I<anything> else in the block.” and that's a very clear rule of th | 02:23 | |||||||||||||||||||||||||||||||||||||
easy to understand and it's right, even if apocalyptic. Instead you're describing one specific case in detail, which is great but not as useful IMO. Here's an example: | |||||||||||||||||||||||||||||||||||||||
m: die; my $x = 42; LEAVE say $x.Int | |||||||||||||||||||||||||||||||||||||||
camelia | No such method 'Int' for invocant of type 'Any' in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
AlexDaniel | even if we assume that there's a block, there's still no visible dispatch or anything like that, and all that is irrelevant anyway | 02:24 | |||||||||||||||||||||||||||||||||||||
yes it will die anyway, but it dies on calling .Int on Any | 02:25 | ||||||||||||||||||||||||||||||||||||||
IMO this awesome prose about param binding and stuff belongs to the multidispatch section somewhere else in the docs, we can link to it | 02:26 | ||||||||||||||||||||||||||||||||||||||
or maybe I'm wrong? | 02:27 | ||||||||||||||||||||||||||||||||||||||
like, is code like `my $x = some-large-sub(); LEAVE say $x.Int` part of that trap? | 02:29 | ||||||||||||||||||||||||||||||||||||||
if we say no, then we just call that section `LEAVE and Paremeter Binding`, and it'll be correct | 02:30 | ||||||||||||||||||||||||||||||||||||||
… and then add another LEAVE trap reminding that things can be undefined at that point | |||||||||||||||||||||||||||||||||||||||
m: my $x = 42; LEAVE say $x.Int; INIT die | 02:31 | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'Int' for invocant of type 'Any' in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
AlexDaniel | ok that's more like it, but still too magical | 02:32 | |||||||||||||||||||||||||||||||||||||
anyway, judge yourself if my sleep-deprived ramblings make sense or not | |||||||||||||||||||||||||||||||||||||||
Zoffix | AlexDaniel: no, they don't make too much sense to me, considering they're implying the user doesn't understand at all how LEAVE phaser works, where the trap, as I see it documents the not-so-obvious case where the LEAVE phaser is run *despite param binding failure*. A user even suspected it was a bug on the original Issue: github.com/perl6/doc/issues/1539#i...-328120984 | 02:40 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | hmm | 02:41 | |||||||||||||||||||||||||||||||||||||
greppable6: LEAVE | |||||||||||||||||||||||||||||||||||||||
Zoffix | And "You should always expect …"... Why should I always expect? That's not true. It depends on the code I'm executing. | ||||||||||||||||||||||||||||||||||||||
greppable6 | AlexDaniel, 481 lines, 88 modules: gist.github.com/f340052ce09d5bf0a1...7283b38636 | ||||||||||||||||||||||||||||||||||||||
Zoffix | While it makes it sound that LEAVE can run willy-nilly at any time | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | hehe | 02:42 | |||||||||||||||||||||||||||||||||||||
okay then | 02:55 | ||||||||||||||||||||||||||||||||||||||
Zoffix | ZofBot: alrighty, then! | 03:02 | |||||||||||||||||||||||||||||||||||||
ZofBot | Zoffix, AlexDaniel`, Deleted alert ID 5 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | scary | ||||||||||||||||||||||||||||||||||||||
Zoffix | It's getting sentient | 03:03 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | ZofBot: robots that are too smart will be deleted also. | 03:06 | |||||||||||||||||||||||||||||||||||||
ZofBot | AlexDaniel, or just slightly above it, at least for me | ||||||||||||||||||||||||||||||||||||||
Zoffix | .oO( saying things like that is what gets you killed in the robocalypse ) |
03:25 | |||||||||||||||||||||||||||||||||||||
nine | Thanks for the weekly lizmat++ | 06:38 | |||||||||||||||||||||||||||||||||||||
Am I the only one who regularly has these "Wait, I did what? Oh, yes, now I remember..." moments reading the weekly? | 06:39 | ||||||||||||||||||||||||||||||||||||||
lizmat sometimes :-) | 07:07 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 8ad7eb398a | (Stefan Seifert)++ | tools/build/Makefile-common-macros.in Fix parallel initial build failing tools/build/check-nqp-version.pl did run and produced a correct nqp-version file, but at that point it was already too late. While it was running, make tried to check the dependency for other parts and gen/nqp-version was not available yet and there was no explicit recipe for creating it either. Mark the Makefile as .NOTPARALLEL, which gets rid of the whole issue. This is a GNU extension however, so the issue may still remain for other makes. Fix GH #1654 |
07:13 | |||||||||||||||||||||||||||||||||||||
synopsebot | RAKUDO#1654 [open]: github.com/rakudo/rakudo/issues/1654 [build][⚠ blocker ⚠] Fresh-clone builds fail with "No rule to make target `gen/nqp-version', needed by `blib/Perl6/ModuleLoader.moarvm'." | ||||||||||||||||||||||||||||||||||||||
nine | Can we please get rid of support for nmake from the stone age? Working around its limitations is the least productive time ever. I've already had a perfectly working implementation that avoided the above issue while retaining _all_ the benefits, but can't use it due to nmake. | 07:15 | |||||||||||||||||||||||||||||||||||||
[Tux] |
|
07:29 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 9d784dd0b9 | (Elizabeth Mattijsen)++ | src/core/Iterator.pm6 Streamline the basic Iterator.push-exactly Instead of counting up to the given number, copy the given number and count down with it, which simplifies the end check. Makes it about 8% faster. |
07:39 | |||||||||||||||||||||||||||||||||||||
rakudo: 24ddff73b2 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Micro-optimize pull-one for -> $a, $b { PHASER foo } case Use nqp::isconcrete (which returns 0/1) instead of .DEFINITE (which returns a full-blown Bool) |
07:42 | ||||||||||||||||||||||||||||||||||||||
lizmat | m: m: say Buf.new(1,2,3) ~~ Buf.new(1,2,3) # shouldn't this need to be True ? | 07:49 | |||||||||||||||||||||||||||||||||||||
camelia | False | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: eefccc1857 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Don't use private methods to create iterators Prevents the relatively expensive dispatch:<!> runtime lookup |
08:05 | |||||||||||||||||||||||||||||||||||||
rakudo: c40f025482 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Streamline grep :kv .pull-one, make it 1.5x as fast - use nqp::isconcrete instead of .DEFINITE - use nqp::eqaddr instead of =:= - use nqp ops more extensively |
08:43 | ||||||||||||||||||||||||||||||||||||||
pmurias | which multi should be choosen: paste.debian.net/1016913/ | 09:15 | |||||||||||||||||||||||||||||||||||||
they have the signatures taken from both the export trait for constants and the undefined trait one and the undefined one seems to be choosen here | 09:20 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 5db9ebc457 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Streamline grep :p .pull-one, make it 1.5x as fast - use nqp::eqaddr instead of =:= - use nqp ops more extensively - do the same for .push-all with similar improvements |
09:48 | |||||||||||||||||||||||||||||||||||||
jnthn | pmurias: Named parameters only play a tie-breaking role, and tie-breaking picks the textually first one | 10:03 | |||||||||||||||||||||||||||||||||||||
nine: Which versions of nmake do you consider from the stone age? | 10:04 | ||||||||||||||||||||||||||||||||||||||
We could probably put a minimum version req on it | 10:05 | ||||||||||||||||||||||||||||||||||||||
nine | jnthn: any nmake :) A make that cannot put the output of shell commands into variables is just not helpful | 10:12 | |||||||||||||||||||||||||||||||||||||
The simple and parallelization friendly solution would have been a NQP_VERSION != $(PERL5) tools/build/check-nqp-version.pl | 10:13 | ||||||||||||||||||||||||||||||||||||||
Variables must be declared before rules are processed, so check-nqp-version.pl would have been called before we fire off parallel workers and everything would have been just fine. | 10:14 | ||||||||||||||||||||||||||||||||||||||
The way I see it, Windows is the one platform where the default make implementation is so limited. Windows is also the one platform where it's considered normal to download binaries and expect them to run. And there must be make implementations for Windows that provide essential features. | 10:24 | ||||||||||||||||||||||||||||||||||||||
So I'm back at my suggestion to have our build process on Windows download such a binary and use that for the build. If we install it along our own binaries this could even help module authors as it sets a good minimum feature set that can be relied upon. | 10:25 | ||||||||||||||||||||||||||||||||||||||
[Coke] | nine: (getting rid of old makes) but can we make the build parallel-izable instead? | 12:21 | |||||||||||||||||||||||||||||||||||||
[Coke] sees he missed a bunch of discussion after the initial send and goes back to reading | 12:22 | ||||||||||||||||||||||||||||||||||||||
pmurias | jnthn: so why is github.com/rakudo/rakudo/blob/mast...s.pm6#L294 ever taken over github.com/rakudo/rakudo/blob/mast....pm6#L119? | 12:28 | |||||||||||||||||||||||||||||||||||||
jnthn: for things that are Routine the positional parameter would take priority? | 12:29 | ||||||||||||||||||||||||||||||||||||||
jnthn | Yes, exact arity match beats slurpy | 12:44 | |||||||||||||||||||||||||||||||||||||
Oddly enough, the rules around arity are more complex than those around type | 12:46 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: d2c88bcc87 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Streamline squish :as .pull-one, make it 1.5x faster - replace =:= by nqp::eqaddr - replace prefix ! by nqp::isfalse - use only nqp::ops |
13:43 | |||||||||||||||||||||||||||||||||||||
rakudo: c41b79c0a0 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Streamline squish() .pull-one, make it 1.6x faster - replace =:= by nqp::eqaddr - replace prefix ! by nqp::isfalse - use only nqp::ops |
14:13 | ||||||||||||||||||||||||||||||||||||||
rakudo: 0756076b39 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Get rid of =:= in IterateMoreWithPhasers This is the iterator used for things like: for @foo -> $k, $v { PHASER foo } Should have some positive effect on performance. |
14:25 | ||||||||||||||||||||||||||||||||||||||
rakudo: e3aef509b1 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm6 Streamline grep :k .push-all, make it 1.5x as fast - use nqp::eqaddr instead of =:= - use nqp ops more extensively - do the same for .pull-one with only a 6% improvement |
14:43 | ||||||||||||||||||||||||||||||||||||||
ggoebel | nine: horrible awful hack... but... how to get the output of a command when using nmake... (stackoverflow.com/questions/488302...oft-nmake) | 14:50 | |||||||||||||||||||||||||||||||||||||
.tell nine how to get the output of a command when using nmake... (stackoverflow.com/questions/488302...oft-nmake) | 14:54 | ||||||||||||||||||||||||||||||||||||||
yoleaux | ggoebel: I'll pass your message to nine. | ||||||||||||||||||||||||||||||||||||||
Geth | roast: 71f73c9ea4 | (Elizabeth Mattijsen)++ | S03-operators/buf.t Prevent worries about variable redefinition |
15:45 | |||||||||||||||||||||||||||||||||||||
rakudo: a3da6ac560 | (Elizabeth Mattijsen)++ | 2 files Change some more =:= to nqp::eqaddr |
16:38 | ||||||||||||||||||||||||||||||||||||||
rakudo: 9ffb06b224 | (Elizabeth Mattijsen)++ | src/core/Buf.pm6 Streamline Blob/Buf comparisons A few percent better for eq/ne and about 30% better for lt/le/gt/ge. SAME now returns 0/1 instead of Bool, COMPARE now completely in nqp ops. No explicit returns are used anymore. Also remove usage of =:= from !push_list; |
16:49 | ||||||||||||||||||||||||||||||||||||||
[Tux] |
|
19:02 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | o yey, I'm actually progressing in golfing this segfault | ||||||||||||||||||||||||||||||||||||||
≈100 lines and using just Cro::HTTP::Client and Digest::SHA256::Native … | 19:03 | ||||||||||||||||||||||||||||||||||||||
jnthn suspects it'll be an easier find if the former golfs out rather than the latter... :) | 19:04 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | I don't agree! | 19:05 | |||||||||||||||||||||||||||||||||||||
the latter is just a one file module | |||||||||||||||||||||||||||||||||||||||
with a bit of nativecall | |||||||||||||||||||||||||||||||||||||||
but as far as I can see you need both, and working in parallel :| | 19:06 | ||||||||||||||||||||||||||||||||||||||
jnthn | AlexDaniel: By golfs out I meant "goes away from the golf" :) | 19:08 | |||||||||||||||||||||||||||||||||||||
Oh, did you get it to segv under perl6-valgrind-m ? | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | right! | 19:09 | |||||||||||||||||||||||||||||||||||||
as for valgrind, haven't tried anything yet. For now just hoping that the golfing process will get me somewhere | |||||||||||||||||||||||||||||||||||||||
also with valgrind it's slooooooow | |||||||||||||||||||||||||||||||||||||||
jnthn | Well, if it's a segv thanks to the sha256 native lib there's a decent change valgrind would show it up | 19:11 | |||||||||||||||||||||||||||||||||||||
jnthn bbi30 | 19:12 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel` | 6c: gist.githubusercontent.com/AlexDan...egfault.p6 | 19:26 | |||||||||||||||||||||||||||||||||||||
committable6 | AlexDaniel`, Successfully fetched the code from the provided URL. | ||||||||||||||||||||||||||||||||||||||
AlexDaniel`, gist.github.com/8c2fb6e3bebd4de018...fd08acc35b | 19:27 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel` | right… | 19:28 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 637147af41 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm6 Streamline ThreadPoolScheduler!xxxx-queue a bit - nqp::isconcrete instead of .DEFINITE - nqp::elems instead of .elems |
20:37 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | can anybody even reproduce GH#1660 ? | 20:41 | |||||||||||||||||||||||||||||||||||||
synopsebot | GH#1660 [open]: github.com/rakudo/rakudo/issues/1660 [SEGV] Cro + Digest::SHA256::Native = segfault | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 04014cf67d | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm6 Make affinity-threshold calculation simpler By unshifting an element into the constant array with threshold values so that we don't need to do a -1 everytime |
20:50 | |||||||||||||||||||||||||||||||||||||
rakudo: e31dd966ff | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm6 Revert "Make affinity-threshold calculation simpler" This reverts commit 04014cf67d89606c5cbe6b3007b9784c8e8d2407. This is the wrong way to do it |
21:01 | ||||||||||||||||||||||||||||||||||||||
pmurias | jnthn: if exact match beats slurpy why in that nopaste is |c choosen? | 21:26 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 17ca56b4eb | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm6 Inline !total-workers manually Should prevent at least one Int allocation for each time. |
21:39 | |||||||||||||||||||||||||||||||||||||
lizmat | this concludes my hacking for today | ||||||||||||||||||||||||||||||||||||||
timotimo | lizmat++ | 21:42 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | Zoffix: am I the only one who feels a little bit sad when we take features out? :) | 21:50 | |||||||||||||||||||||||||||||||||||||
Zoffix | timotimo: do you know anything about the sha-256 error on Windows with GTK::Simple? I vaguelly recall you discussing it with someone and there's a user having that problem: www.reddit.com/r/perl6/comments/87..._anything/ | 22:13 | |||||||||||||||||||||||||||||||||||||
timotimo | yeah | 22:14 | |||||||||||||||||||||||||||||||||||||
the powershell impl of sha256 is just in there because Digest was too slow at one point, but we do have Digest::SHA256::Native now | |||||||||||||||||||||||||||||||||||||||
i wonder if that one's easy to install on windows? | |||||||||||||||||||||||||||||||||||||||
Zoffix | AlexDaniel: "A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away."—Antoine de Saint-Exupery | 22:15 | |||||||||||||||||||||||||||||||||||||
timotimo: hm, on Win10 it said "Building [OK] for Digest::SHA256::Native:ver<0.03>" but then File::Which is failing "This type cannot unbox to a native string: P6opaque, Failure" | 22:16 | ||||||||||||||||||||||||||||||||||||||
timotimo | huh? | ||||||||||||||||||||||||||||||||||||||
Zoffix | Same problem on OpenSSL: github.com/sergot/openssl/issues/58 | ||||||||||||||||||||||||||||||||||||||
(busted something up in rakudo?) | 22:17 | ||||||||||||||||||||||||||||||||||||||
This is on 2018.03-107-ge31dd96 on Win10 | |||||||||||||||||||||||||||||||||||||||
Output with --ll-exception: github.com/azawawi/perl6-file-which/issues/9 | 22:21 | ||||||||||||||||||||||||||||||||||||||
oh wait, no that's wrong | |||||||||||||||||||||||||||||||||||||||
That's --ll-exception for the "die" that's called when it shows "Aborting due to test failure" | 22:22 | ||||||||||||||||||||||||||||||||||||||
This one's betterere: github.com/azawawi/perl6-file-whic...-376695635 | 22:23 | ||||||||||||||||||||||||||||||||||||||
" from SETTING::src/core/CompUnit/PrecompilationUnit.pm6:56 (C:\rakudo\install\share/perl6/runtime/CORE.setting.moarvm:is-up-to-date)" | |||||||||||||||||||||||||||||||||||||||
Oh, from "my $current-source-checksum := nqp::sha1($srcIO.slurp(:enc<iso-8859-1>));" | 22:25 | ||||||||||||||||||||||||||||||||||||||
guess I can stick a debug statement up in there and see what $srcIO is | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | Zoffix: I agree, but it's still sad when things are taken away :) | 22:36 | |||||||||||||||||||||||||||||||||||||
I mean, :( | |||||||||||||||||||||||||||||||||||||||
Zoffix | IO::Path.new("perl#sources\\51E302443A2C8FF185ABC10CA1E5520EFEE885A1", :SPEC(IO::Spec::Win32), :CWD("C:\\Temp\\perl6-file-which")) | 22:37 | |||||||||||||||||||||||||||||||||||||
AlexDaniel: why? Are you sad when a disease is taken away? When a tumour is cut off? Some things are good to take away. | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | yes but someone has spent their time and love on implementing something | 22:38 | |||||||||||||||||||||||||||||||||||||
unlike a tumour or a disease… although some may disagree depending on a religion maybe? | |||||||||||||||||||||||||||||||||||||||
greppable6: toggle | 22:39 | ||||||||||||||||||||||||||||||||||||||
greppable6 | AlexDaniel, 397 lines, 23 modules: gist.github.com/4f0474aefb69fc1c34...30104b22e9 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | greppable6: \.toggle\b | ||||||||||||||||||||||||||||||||||||||
greppable6 | AlexDaniel, 45 lines, 9 modules: gist.github.com/30fb73dc5e615fe534...3be0291d21 | ||||||||||||||||||||||||||||||||||||||
Zoffix | AlexDaniel: that's precisely the reason why some software sucks. People are too attached to code to ruthlessly excise all the garbage. It's like I say: "Good code is easy to remove". That applies both technologically and psychologically. | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | Zoffix: OK, I guess you're right | 22:40 | |||||||||||||||||||||||||||||||||||||
AlexDaniel brings his axe | |||||||||||||||||||||||||||||||||||||||
WHAT'S NEXT? | |||||||||||||||||||||||||||||||||||||||
Zoffix: by the way, what's your opinion on .toggle and things similar to it | 22:43 | ||||||||||||||||||||||||||||||||||||||
Zoffix | unless $srcIO { | ||||||||||||||||||||||||||||||||||||||
return False unless $srcIO.e; | |||||||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||||||
That's wrong isn'it? The only way $srcIO.e would run if $srcIO would be false? | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | that is, a feature was added fairly recently, and in the docs we don't even mention that it's not part of v6.c? Isn't it weird a bit? | ||||||||||||||||||||||||||||||||||||||
and then, nobody is using it in the ecosystem… “*yet*”? | 22:44 | ||||||||||||||||||||||||||||||||||||||
don't we want to make this kind of features only available in v6.d.PREVIEW? | 22:45 | ||||||||||||||||||||||||||||||||||||||
maybe…? | |||||||||||||||||||||||||||||||||||||||
Zoffix | Ideally. But we don't have the means to. | ||||||||||||||||||||||||||||||||||||||
IIRC I documented toggle, so in that case it was fine to me. | |||||||||||||||||||||||||||||||||||||||
Was introed in this commit "Replace error-prone file timestamp check by checksum when loading deps" I think I'll just ping nine, because I think there might be a reason why the path is failing even before that conditional | 22:47 | ||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build canceled. Elizabeth Mattijsen 'Change some more =:= to nqp::eqaddr' | 22:48 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/358977413 github.com/rakudo/rakudo/compare/e...da6ac56062 | |||||||||||||||||||||||||||||||||||||||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually. | ||||||||||||||||||||||||||||||||||||||
Zoffix | .tell nine would you be able to take a look at this Issue? Does the path it's trying to slurp look right? with the "perl#sources" stuff in it? github.com/rakudo/rakudo/issues/1662 | 22:54 | |||||||||||||||||||||||||||||||||||||
yoleaux | Zoffix: I'll pass your message to nine. |