Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-06-22

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

All times shown according to UTC.

Time Nick Message
00:52 Geth ¦ nqp: MasterDuke17++ created pull request #365: Add .gist method to NQPRoutine
00:52 Geth ¦ nqp: review: https://github.com/perl6/nqp/pull/365
01:49 ilbot3 joined #perl6-dev
01:49 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
02:46 awwaiid joined #perl6-dev
02:51 awwaiid joined #perl6-dev
02:57 awwaiid joined #perl6-dev
03:02 awwaiid joined #perl6-dev
03:08 awwaiid joined #perl6-dev
03:19 awwaiid joined #perl6-dev
03:41 awwaiid joined #perl6-dev
03:46 awwaiid joined #perl6-dev
04:09 awwaiid joined #perl6-dev
04:14 awwaiid joined #perl6-dev
04:25 awwaiid joined #perl6-dev
04:36 awwaiid joined #perl6-dev
05:06 awwaiid joined #perl6-dev
05:15 awwaiid joined #perl6-dev
05:27 Geth ¦ nqp: 363352493b | MasterDuke17++ | src/core/NQPRoutine.nqp
05:27 Geth ¦ nqp: Add .gist method to NQPRoutine
05:27 Geth ¦ nqp:
05:27 Geth ¦ nqp: This way `say Match.^methods` doesn't die with `X::Method::NotFound
05:27 Geth ¦ nqp: exception produced no message`.
05:27 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/363352493b
05:27 Geth ¦ nqp: 8c3aedcc97 | niner++ (committed using GitHub Web editor) | src/core/NQPRoutine.nqp
05:27 Geth ¦ nqp: Merge pull request #365 from MasterDuke17/add_gist_method_NQPRoutine
05:27 Geth ¦ nqp:
05:27 Geth ¦ nqp: Add .gist method to NQPRoutine
05:27 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/8c3aedcc97
05:38 astj joined #perl6-dev
05:41 astj joined #perl6-dev
05:43 TimToady joined #perl6-dev
05:58 TimToady joined #perl6-dev
07:39 lizmat Files=1206, Tests=62534, 219 wallclock secs (13.22 usr  4.85 sys + 1329.43 cusr 134.60 csys = 1482.10 CPU)
07:45 nine Can someone tell me, _why_ this patch actually works? https://gist.github.com/niner/cb9189a88b41d19e1bb0bbb306f7ae15
07:47 nine We're already in a MAIN sub, so MAIN dispatching should be done. But when I "require" a script that contains its own MAIN subs, they seem to get called just fine.
07:47 nine I mean it's great that this little patch shaves off a full rakudo start (~ 130ms) of invoking installed scripts like zef or mi6. But I did not actually expect it to be this easy?!
08:00 nine Doesn't work that way when I precompile the script btw. Then it will load the script but not invoke MAIN, just as I'd expect it to behave with the above patch.
08:06 lizmat feels like a bug that acts as a feature  :-)
08:10 nine Yeah, I will resist the temptation to commit this right away. But it shows that my plan to replace those elaborate wrapper scripts we install by a single call to some CompUnit::RepositoryRegistry.run-script(...)
08:11 nine That way we can utilize that bug without having to commit to staying compatible with it. And it should save some compilation time.
08:15 nine Which could easily be another 100ms
08:27 cog_ joined #perl6-dev
08:46 |Tux| ???? ???? ???? ????
08:46 |Tux| This is Rakudo version 2017.06-45-g86e7b2bd2 built on MoarVM version 2017.06-14-g888b33d1
08:46 |Tux| csv-ip5xs        2.636
08:47 |Tux| test            12.279
08:47 |Tux| test-t           3.907 - 3.954
08:47 |Tux| csv-parser      12.204
08:47 lizmat whee!  :-)
08:49 lizmat afk&
10:04 cog_ joined #perl6-dev
11:05 cog_ joined #perl6-dev
11:49 AlexDaniel joined #perl6-dev
11:55 pmurias joined #perl6-dev
11:55 pmurias if normalizecodes is r(obj) r(int64) r(obj) how does it return a value on the MoarVM backend?
11:57 jnthn It puts the result into the supplied buffer
11:57 jnthn iirc
11:58 jnthn yeah
11:58 jnthn qp::normalizecodes(self, nqp::const::NORMALIZE_NFC, nqp::create(NFC))
11:58 jnthn The third argument is the target
11:59 jnthn And then it's just the usual mechanism in the QAST -> MAST compiler of indicating which argument becomes the return value
11:59 pmurias thanks, I missed that mechanism
12:01 pmurias it seems js is being moved towards being a better target as the ECMAScript 2015 added the normalization methods ;)
12:17 jnthn :)
12:19 pmurias .oO(maybe they add the NFG soon?)
12:42 TimToady joined #perl6-dev
12:48 TimToady joined #perl6-dev
12:57 TimToady joined #perl6-dev
14:10 ugexe nine: does it do the right thing for --help too?
14:10 awwaiid joined #perl6-dev
14:10 ugexe or the incorrect command output?
14:21 awwaiid joined #perl6-dev
14:32 eveo joined #perl6-dev
14:32 awwaiid joined #perl6-dev
14:34 AlexDani` joined #perl6-dev
14:38 awwaiid joined #perl6-dev
14:44 awwaiid joined #perl6-dev
15:04 donaldh joined #perl6-dev
15:05 awwaiid joined #perl6-dev
15:19 eveo New blog post: "Perl 6: Seqs, Drugs, And Rock'n'Roll": https://perl6.party/post/Perl-6-Seqs-Drugs-and-Rock-n-Roll
15:21 awwaiid joined #perl6-dev
15:29 eveo left #perl6-dev
15:32 awwaiid joined #perl6-dev
15:38 awwaiid joined #perl6-dev
15:49 awwaiid joined #perl6-dev
15:54 awwaiid joined #perl6-dev
16:05 awwaiid joined #perl6-dev
16:05 lizmat eveo: I see your getting into the High End Perl spirit :-)
16:07 eveo joined #perl6-dev
16:07 eveo lizmat: what is that?
16:08 lizmat http://act.perlconference.org/tpc-2017-amsterdam/call-for-papers.html
16:09 lizmat of course, in Amsterdam you could of course do /End/and/  :-)
16:11 eveo Ah :)
16:16 awwaiid joined #perl6-dev
16:16 lizmat eveo: isn't "my $supply = supply { emit take 42 }" a. a bit weird and b. using the undocumented behaviour that take returns the value taken?
16:16 lizmat I seem to recall wanting to have take return Nil
16:17 perlpilot huh ... I didn't realize that was undocumented.
16:19 eveo OK. I changed it not to rely on that
16:19 lizmat perlpilot: not in https://docs.perl6.org/routine/take
16:19 lizmat nor in https://docs.perl6.org/syntax/gather%20take
16:20 perlpilot As long as it's spec  (which I'm now also unsure about :)
16:22 lizmat hmmm   S04:818
16:22 synopsebot6 Link: http://design.perl6.org/S04.html#line_818
16:23 lizmat I seem to recall jnthn wanting to make it return Nil for optimization reasons
16:23 lizmat but I could very well be wrong  :-)
16:26 Geth ¦ rakudo/nom: 43c1767b2c | (Elizabeth Mattijsen)++ | src/core/Mu.pm
16:26 Geth ¦ rakudo/nom: .BUILD/.TWEAK calls 15x faster if no args to .new
16:26 Geth ¦ rakudo/nom:
16:26 Geth ¦ rakudo/nom: Slipping an empty hash for named parameters, is very expensive.  Since
16:26 Geth ¦ rakudo/nom: we already have low-level access to the named parameters specified with
16:26 Geth ¦ rakudo/nom: .new, we can quickly check if anything was specified.  And then don't
16:26 Geth ¦ rakudo/nom: bother slipping the empty hash when we call BUILD (or TWEAK for that
16:26 Geth ¦ rakudo/nom: matter).
16:26 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/43c1767b2c
16:26 awwaiid joined #perl6-dev
16:38 awwaiid joined #perl6-dev
16:41 lizmat m: use nqp; class A { has Int $.a is default(42) }; my $a := nqp::create(A); dd $a.a; dd nqp::getattr($a,A,q/$!a/).VAR.default   # jnthn thoughts ?
16:41 camelia rakudo-moar 43c176: OUTPUT: «Int␤42␤»
16:54 awwaiid joined #perl6-dev
16:55 lizmat m: use nqp; class A { has Int $.a is default(42) }; my $a := nqp::create(A); dd $a.a = Nil; dd nqp::getattr($a,A,q/$!a/).VAR.default   # not that assigning Nil *does* work
16:55 camelia rakudo-moar 43c176: OUTPUT: «Cannot modify an immutable Int ((Int))␤  in block <unit> at <tmp> line 1␤␤»
16:55 lizmat m: use nqp; class A { has Int $.a is default(42) is rw }; my $a := nqp::create(A); dd $a.a = Nil; dd nqp::getattr($a,A,q/$!a/).VAR.default   # if you mark it "is rw"  :-)
16:55 camelia rakudo-moar 43c176: OUTPUT: «Int $!a = 42␤42␤»
16:56 lizmat .tell jnthn looks like nqp::create is actually assigning type objects to vivify attributes, is that correct ?
16:56 yoleaux lizmat: I'll pass your message to jnthn.
17:05 llfourn joined #perl6-dev
17:13 awwaiid joined #perl6-dev
17:30 ggoebel .tell pmurias saw the recent commits regarding building js backend... what is the full set of steps now to build it from a fresh git clone https://github.com/rakudo/rakudo.git?
17:30 yoleaux ggoebel: I'll pass your message to pmurias.
17:36 awwaiid joined #perl6-dev
17:37 go|dfish joined #perl6-dev
17:50 awwaiid joined #perl6-dev
17:55 awwaiid joined #perl6-dev
17:58 samcv good *
17:58 * samcv yawns
17:58 eveo \o
17:59 jnthn o/ samcv
18:06 awwaiid joined #perl6-dev
18:09 lizmat hmnmm...  why didn't tell yoleaux my message to jnthn
18:09 yoleaux 17:59Z <jnthn> lizmat: Vivification happens at first access, not at creation time
18:09 lizmat ah, different channel
18:11 eveo looks like zef likes to keep stuff around. my toaster runs are crashing due to low disk space and I've been waiting for cpan@toaster:~/.zef$ du -sh to complete for a couple of minutes already :/
18:13 awwaiid joined #perl6-dev
18:14 * eveo gets tired of waiting and goes with the nuclear option
18:19 eveo m: say 7.3-3.1
18:19 camelia rakudo-moar 43c176: OUTPUT: «4.2␤»
18:19 eveo 4.2GB of stuff :S
18:19 awwaiid joined #perl6-dev
18:20 samcv well you're installing all the repos?
18:20 samcv i think you can remove ~/.zef/tmp easily. but removing ~/.zef/cache can remove compcache
18:21 eveo It was ~/.zef/store
18:21 eveo I'm installing all the repos to a custom location in /tmp that gets wiped on reboot
18:22 samcv ah
18:22 samcv wonder if you can install them with depth of 1?
18:23 eveo hm? I'm not following. I'm just installing modules. I don't care at all about git repos or whether there are any git repos backing these modules in the first place.
18:24 eveo filed: https://github.com/ugexe/zef/issues/179
18:30 awwaiid joined #perl6-dev
18:32 ugexe thats unavoided with caching stuff. however now that I think about it should be deleting stuff on exit if the cache is disabled but instead is just not updating the cache's index file
18:33 eveo yeah, I'm using --/cached would be neat if those files could be automagically wiped.
18:33 nine ugexe: indeed it does
18:34 eveo m: say log 10¹⁰⁰⁰⁰⁰⁰, 42
18:34 camelia rakudo-moar 43c176: OUTPUT: «Inf␤»
18:34 eveo Wonder if Int log is possible :/
18:35 eveo Oh, I guess not. The result wouldn't always be an Int. :\
18:35 nine ugexe: now I even understand why. Perl6::Actions checks for precompilation mode. As we're not precompiling, it just adds a call to MAIN_HELPER to the comp unit's main line. And MAIN_HELPER looks in the caller's lexical scope for MAIN subs to execute.
18:40 nine ugexe: does zef run git clone with --depth 1? As you don't need the history, that could save transfer and disk space
18:40 awwaiid joined #perl6-dev
18:45 ugexe well it does a git clone/pull into ~/.zef/tmp/foo directory, and then that goes through the extract phase as `git --work-tree ~/.zef/foo.git/ checkout $sha`
18:45 ugexe --work-tree ~/.zef/store/foo.git/ ^
18:46 awwaiid joined #perl6-dev
18:46 ugexe i think it used to use --depth 1 but i changed it to this to open up the option for commit-ids in the source-url
18:47 ugexe or maybe it was so updating the package lists from a git repo was fast
18:47 llfourn joined #perl6-dev
18:52 awwaiid joined #perl6-dev
18:57 awwaiid joined #perl6-dev
19:03 awwaiid joined #perl6-dev
19:09 awwaiid joined #perl6-dev
19:23 awwaiid joined #perl6-dev
19:31 llfourn joined #perl6-dev
19:31 eveo m: Seq.new(class :: does Iterator { has $!n = 10; method pull-one {say "pulling!"; $!n-- and 42 or IterationEnd }; method skip-one { $!n-- }; method count-only { 10 } }.new).tail.say
19:31 camelia rakudo-moar 43c176: OUTPUT: «pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤pulling!␤42␤»
19:32 eveo Would've thought this Seq could've skip-at-least(.count-only-1) and .pull-one instead of pulling all
19:32 eveo s: Seq.new(class :: does Iterator { has $!n = 10; method pull-one {say "pulling!"; $!n-- and 42 or IterationEnd }; method skip-one { $!n-- }; method count-only { 10 } }.new), 'tail', \()
19:32 SourceBaby eveo, Sauce is at https://github.com/rakudo/rakudo/blob/43c1767/src/core/Any-iterable-methods.pm#L1873
19:33 eveo s: Rakudo::Iterator, 'LastValue'
19:33 SourceBaby eveo, Sauce is at https://github.com/rakudo/rakudo/blob/43c1767/src/core/Rakudo/Iterator.pm#L1898
19:33 eveo Ah. just needs a little hackety hack up in there
19:33 * eveo will do that in ~1.5h
19:34 awwaiid joined #perl6-dev
19:35 TimToady joined #perl6-dev
19:40 awwaiid joined #perl6-dev
19:45 eveo New toaster run ready
19:45 eveo buggable: toast
19:45 buggable eveo, Between 2017.06-46-g43c1767 and 2017.06: 6 (0.73%) modules got burnt; 11 (1.33%) got unsucced; 199 (24.09%) out of 826 modules appear unusable. See https://toast.perl6.party/ for details.
19:45 eveo buggable: toaster
19:45 buggable eveo, Between 2017.06-46-g43c1767 and 2017.06: 6 (0.73%) modules got burnt; 11 (1.33%) got unsucced; 199 (24.09%) out of 826 modules appear unusable. See https://toast.perl6.party/ for details.
19:46 eveo "# Cannot invoke null object"
19:46 moritz that is certainly true :-9
19:46 eveo Unsure about unburnt unsuccs. I had to kill a bunch of stuff. Maybe I didn't wait long enough
19:46 moritz but often not a very helpfull message :-)
19:46 Geth ¦ rakudo/nom: 92f8abe008 | (Stefan Seifert)++ | 2 files
19:46 Geth ¦ rakudo/nom: Speed up starting installed scripts
19:46 Geth ¦ rakudo/nom:
19:46 Geth ¦ rakudo/nom: Turns out we don't actually have to run a separate perl6 process just to run
19:46 Geth ¦ rakudo/nom: the appropriate installed script from the wrapper. Due to insufficient checks
19:46 Geth ¦ rakudo/nom: in Perl6::Actions, MAIN subs are even run when loading a script with
19:46 Geth ¦ rakudo/nom: "require". Arguably that's a bug, but for now this is useful.
19:46 Geth ¦ rakudo/nom:
19:46 Geth ¦ rakudo/nom: <…commit message has 6 more lines…>
19:46 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/92f8abe008
19:47 awwaiid joined #perl6-dev
19:47 TimToady joined #perl6-dev
19:47 * eveo gulps at that last sentence
19:47 nine I guess I should start putting the most interesting lines in the top of the commit message: "Brings down zef's startup from 0.744 to 0.507 seconds."
19:47 eveo Cool
19:47 nine eveo: the ommitted rest of the message explains how I dealt with that being a bug :)
19:48 moritz and iirc it's nothing new, right?
19:48 nine moritz: probably been there forever
19:49 moritz I remember that when I hacked on MAIN together with patrickas, it was there :-)
19:49 eveo nine: I don't fully get it. There aren't even notes that the behaviour relies on a bug (is it?). If it's definitely a bug, this commit will make it harder to figure out why the fix to the bug breaks other stuff :/
19:49 * eveo relocates
19:50 nine eveo: I actually would like to precompile those installed modules for further savings. When I do that I will have to find another way to run MAIN anyway and will no longer depend on the bug.
19:50 eveo Cool.
19:51 nine eveo: but fixing the bug is not high prio anyway. It's been there forever and since modules are precompiled, you pretty much can only run into it by requireing a source file directly.
19:51 TimToady joined #perl6-dev
19:52 nine For those wondering: this speedup only affects newly installed scripts.
19:57 TimToady joined #perl6-dev
19:57 awwaiid joined #perl6-dev
20:03 awwaiid joined #perl6-dev
20:08 nine I wonder if we can still change the .files method of CompUnit::Repository::FileSystem and CompUnit::Repository::Installation. There are no spec tests, the methods are not part of any Role (the installed checks incorrectly assume that Installable repos support it), the name doesn't make sense and its return value is surprising.
20:10 [Coke] eveo: unsucced ?
20:10 awwaiid joined #perl6-dev
20:12 Geth ¦ rakudo/curfs-resources-lookup: 71ffb16444 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/FileSystem.pm
20:12 Geth ¦ rakudo/curfs-resources-lookup: Find proper %?RESOURCES for non-lib CURFS
20:12 Geth ¦ rakudo/curfs-resources-lookup:
20:12 Geth ¦ rakudo/curfs-resources-lookup: Fixes `perl6 -I. bin/zef --help` - in this case the failure was `%?RESOURCES<config.json>` pointing 1 directory level above what it should have.
20:12 Geth ¦ rakudo/curfs-resources-lookup: review: https://github.com/rakudo/rakudo/commit/71ffb16444
20:12 Geth ¦ rakudo: ugexe++ created pull request #1106: Find proper %?RESOURCES for non-lib CURFS
20:12 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1106
20:12 eveo [Coke]: yup. Their status was "Succ" on 2017.06 toast and now it isn't, hence an unsucc. It's a superset that includes burnt modules that went from Succ to Fail that also includes Killed and Unknown toasting failures :)
20:23 [Coke] thanks.
20:27 awwaiid joined #perl6-dev
20:30 Geth ¦ rakudo/curfs-resources-lookup: a70362c813 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/FileSystem.pm
20:30 Geth ¦ rakudo/curfs-resources-lookup: %!meta<files> is a hash, not a list of pairs
20:30 Geth ¦ rakudo/curfs-resources-lookup: review: https://github.com/rakudo/rakudo/commit/a70362c813
20:37 ugexe we should probably separate CURs for -Idirectory/containing/meta/file and -Idirectory/containing/perl/modules/only
20:44 ugexe nine: this is how I've imagined files: https://github.com/ugexe/Perl6-CompUnit--Repository--Lib/blob/master/lib/CompUnit/Repository/Lib.pm6#L220
20:46 nine ugexe: why would a method called "files" return dists?
20:46 ugexe it returns the meta data for each dist
20:47 awwaiid joined #perl6-dev
20:48 ugexe if you search for `bin/zef` and there are multiple results what else should it return? a list of files with no context isn't much good
20:48 lizmat ugexe: so is the PR ready to merge ?
20:48 lizmat ah, I guess not  :-)
20:48 ugexe lizmat: that PR is separate from this
20:48 lizmat so 1106 is ok ?
20:49 ugexe yes
20:49 nine ugexe: you already tell it very precisely, what you're looking for. It could give you just that instead of a list of candidates. Just like .need.
20:49 Geth ¦ rakudo/nom: 71ffb16444 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/FileSystem.pm
20:49 Geth ¦ rakudo/nom: Find proper %?RESOURCES for non-lib CURFS
20:49 Geth ¦ rakudo/nom:
20:49 Geth ¦ rakudo/nom: Fixes `perl6 -I. bin/zef --help` - in this case the failure was `%?RESOURCES<config.json>` pointing 1 directory level above what it should have.
20:49 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/71ffb16444
20:49 Geth ¦ rakudo/nom: a70362c813 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/FileSystem.pm
20:49 Geth ¦ rakudo/nom: %!meta<files> is a hash, not a list of pairs
20:49 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a70362c813
20:49 Geth ¦ rakudo/nom: d20534c699 | lizmat++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/FileSystem.pm
20:49 Geth ¦ rakudo/nom: Merge pull request #1106 from rakudo/curfs-resources-lookup
20:49 Geth ¦ rakudo/nom:
20:49 Geth ¦ rakudo/nom: Find proper %?RESOURCES for non-lib CURFS
20:49 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d20534c699
20:50 ugexe sometimes you want a list of all options
20:51 ugexe but just "/some/path".IO would not suffice
20:52 nine That's why I add another method, that doesn't have to pay that price. Because when looking for a script to run, you're interested only in a single script that fits the criteria. And that as fast as possible.
20:53 ugexe sure, but that doesn't fee like a method called 'files' to me
20:53 nine Nope, it's called "script" ;)
20:54 awwaiid joined #perl6-dev
20:54 MasterDuke joined #perl6-dev
20:54 nine Maybe a better name will come along. But I'd really like this to serve a very narrow use case to be able to optimize it as much as possible.
20:57 lizmat m: dd 4 & 6 != 42  # shouldn't this return a Junction ?
20:57 camelia rakudo-moar 92f8ab: OUTPUT: «Bool::True␤»
21:00 lizmat m: dd 4 & 6 == 42  # this does
21:00 camelia rakudo-moar 92f8ab: OUTPUT: «all(Bool::False, Bool::False)␤»
21:01 AlexDaniel joined #perl6-dev
21:01 eveo s: &infix:<!=>, \(4 & 6,  42)
21:01 SourceBaby eveo, Sauce is at https://github.com/rakudo/rakudo/blob/92f8abe/src/core/Numeric.pm#L291
21:01 eveo s: &infix:<==>, \(4 & 6,  42)
21:01 SourceBaby eveo, Something's wrong: ␤ERR: Could not find candidate that can do \(all(4, 6), 42)␤  in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 37␤  in block <unit> at -e line 6␤␤
21:03 lizmat m: dd not 4 & 6 == 42  # we have a test that it should autothread like not ==
21:03 camelia rakudo-moar 92f8ab: OUTPUT: «Bool::True␤»
21:03 lizmat fwiw, that feels weird to me
21:04 eveo Looks like it was added here: https://github.com/rakudo/rakudo/commit/4a247b1a34af698ba201070d915ea0d8d88c7774
21:04 eveo possibly by accident
21:04 eveo I mean the != candidate that collapses the junction
21:05 nine zef startup time down to 0.392s!
21:05 eveo :o
21:05 eveo nine__
21:05 eveo nine++
21:06 awwaiid joined #perl6-dev
21:07 eveo .ask moritz do you remember what "not raising with Junctions" means in this commit? We now have a situation that Junction == Numeric results in a Junction, but Junction != Numeric collapses the Junction and returns a Bool. That difference wasn't intended, was it? https://github.com/rakudo/rakudo/commit/4a247b1a34af698ba201070d915ea0d8d88c7774
21:07 yoleaux eveo: I'll pass your message to moritz.
21:10 travis-ci joined #perl6-dev
21:10 travis-ci Rakudo build errored. Stefan Seifert 'Speed up starting installed scripts
21:10 travis-ci https://travis-ci.org/rakudo/rakudo/builds/245934642 https://github.com/rakudo/rakudo/compare/43c1767b2cfd...92f8abe00883
21:10 buggable [travis build above] ✓ All failures are due to timeout (1), missing build log (0), GitHub connectivity (0), or failed make test (0).
21:10 travis-ci left #perl6-dev
21:12 awwaiid joined #perl6-dev
21:12 Geth ¦ rakudo/nom: 4693ec8678 | (Stefan Seifert)++ | 2 files
21:12 Geth ¦ rakudo/nom: Speed up finding installed scripts by using a specialized interface
21:12 Geth ¦ rakudo/nom:
21:12 Geth ¦ rakudo/nom: The .files method of CompUnit repositories needs to read the candidate
21:12 Geth ¦ rakudo/nom: dists and parse the JSON. When looking for a single script, we are actually
21:12 Geth ¦ rakudo/nom: only interested in the path to the file. So use a specialized method that
21:12 Geth ¦ rakudo/nom: does only that and can thus avoid parsing any JSON at all. The only
21:12 Geth ¦ rakudo/nom: drawback is that for the full gain, the dist has to be re-installed as
21:12 Geth ¦ rakudo/nom: previously the short name lookup file did not contain the resource id of
21:12 Geth ¦ rakudo/nom: the script.
21:12 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4693ec8678
21:12 nine I dare say cutting zef's startup time almost in half makes for a good hacking evening :)
21:13 lizmat nine++
21:14 nine Oh, for the full benefit of these speedups make sure you uninstall previous versions of affected dists and re-install the current one. Otherwise the compatibility code will have to read JSON files.
21:15 ugexe nine++ - just think how slow searching/loading the huge ecosystem json is heh
21:15 eveo .tell [Tux] would you re-build your test-t bench from scratch? We added some start-up speedups, but they need previous versions of stuff uninstalled: https://irclog.perlgeek.de/perl6-dev/2017-06-22#i_14774187
21:15 yoleaux eveo: I'll pass your message to [Tux].
21:16 nine eveo: won't affect [Tux]'s benchmarks, as this is for installed scripts.
21:16 eveo doh
21:17 eveo .tell [Tux] never mind, turns out this is only for installed scripts.
21:17 yoleaux eveo: I'll pass your message to [Tux].
21:17 ugexe i bet it makes a bigger difference on windows too
21:23 awwaiid joined #perl6-dev
21:28 lizmat m: dd <a b b c c c d d d d>.Mix (-) <a b c d>.Mix   # sorta expected
21:29 lizmat camelia?
21:29 lizmat m: dd <a b b c c c d d d d>.Mix (-) <a b c d>.Mix   # sorta expected
21:29 lizmat ("d"=>3,"b"=>1,"c"=>2).Mix
21:29 camelia rakudo-moar d20534: OUTPUT: «Resource temporarily unavailable»
21:29 camelia rakudo-moar d20534: OUTPUT: «("d"=>3,"b"=>1,"c"=>2).Mix␤»
21:30 lizmat m: dd <a b c d>.Mix  (-) <a b b c c c d d d d>.Mix  # expected (d=>-3,c=>-2,b=>-1).Mix
21:30 camelia rakudo-moar d20534: OUTPUT: «().Mix␤»
21:34 awwaiid joined #perl6-dev
21:46 awwaiid joined #perl6-dev
21:52 awwaiid joined #perl6-dev
21:53 Geth ¦ rakudo/nom: bde28209b3 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/Repository/FileSystem.pm
21:53 Geth ¦ rakudo/nom: Fix unitialized value stringification warning
21:53 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bde28209b3
21:54 ugexe USAGE drowned those out earlier :x
21:54 MasterDuke joined #perl6-dev
21:57 Geth ¦ rakudo/nom: 9c04dfc4a4 | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm
21:57 Geth ¦ rakudo/nom: Make Any.tail() use iterator's .count-only if available
21:57 Geth ¦ rakudo/nom:
21:57 Geth ¦ rakudo/nom: Makes, for example, %h.keys.tail 2.1x faster for a hash with 500_000 keys.
21:57 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9c04dfc4a4
22:00 Geth ¦ roast: c4de8b7ecc | (Elizabeth Mattijsen)++ | S03-operators/difference.t
22:00 Geth ¦ roast: Add initial set of tests for set difference (-)
22:00 Geth ¦ roast:
22:00 Geth ¦ roast: Tests that need further attention are commented out for now.
22:00 Geth ¦ roast: review: https://github.com/perl6/roast/commit/c4de8b7ecc
22:03 awwaiid joined #perl6-dev
22:04 eveo bah... should've waited until I finished my tests
22:05 lizmat eveo: problem with R:I.LastValue ?
22:06 eveo lizmat: no, with my new addition. It still .pull-ones even when .count-only gives zero, which is kinda pointless
22:06 eveo Well, yeah, with .Lastvalue, but not before my change :)
22:07 lizmat if count-only returns 0, it shouldn't do anything, as result is already IterationEnd, right ?
22:08 lizmat make line 1906 part of the condition in 1908 and you're done
22:09 eveo Yeah, that's what I did
22:09 Geth ¦ rakudo/nom: 3a9d8e79d3 | (Elizabeth Mattijsen)++ | t/spectest.data
22:09 Geth ¦ rakudo/nom: Also run the more thorough set difference tests
22:09 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3a9d8e79d3
22:09 lizmat and that concludes my hacking for today
22:10 lizmat good night!
22:10 eveo night
22:15 awwaiid joined #perl6-dev
22:19 eveo ZOFVM: Files=1256, Tests=139510, 114 wallclock secs (19.60 usr  3.13 sys + 2217.53 cusr 162.77 csys = 2403.03 CPU)
22:20 Geth ¦ rakudo/nom: 4079f7b548 | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm
22:20 Geth ¦ rakudo/nom: Make R::I::LastValue not pull when count is zero
22:20 Geth ¦ rakudo/nom:
22:20 Geth ¦ rakudo/nom: Because it's pointless
22:20 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4079f7b548
22:21 awwaiid joined #perl6-dev
22:22 Geth ¦ roast: 449a45dcd2 | (Zoffix Znet)++ | S32-list/tail.t
22:22 Geth ¦ roast: Spec Any.tail needs to respect .count-only
22:22 Geth ¦ roast:
22:22 Geth ¦ roast: Allow one pull when count is zero, since it's technically not a mistake.
22:22 Geth ¦ roast: Rakudo does not pull in that case, since it's pointless.
22:22 Geth ¦ roast: review: https://github.com/perl6/roast/commit/449a45dcd2
22:22 * eveo calls it a day as well
22:23 eveo Gonna do the same .count-only thing with .tail(n) and fix RT#131617 tomorrow or on the weekend
22:23 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131617
22:34 awwaiid joined #perl6-dev
22:40 awwaiid joined #perl6-dev
22:47 ugexe m: use Test:ver<6.c>; say Test.^ver; class Test2:ver<6.d> { }; say Test2.^ver; # where is the ^ver logic happening at?
22:47 camelia rakudo-moar 4079f7: OUTPUT: «(Mu)␤v6.d␤»
22:50 eveo m: my Channel $x .= new; $x.Supply.tap: &say; $x.send: 42; $x.close; await $x
22:50 camelia rakudo-moar 4079f7: OUTPUT: «42␤Cannot receive a message on a closed channel␤  in block <unit> at <tmp> line 1␤␤»
22:50 eveo What message is it receiving? :/
22:51 ugexe race conditiony
22:51 eveo hm?
22:52 eveo The 42 is received and printed already...
22:52 eveo m: my Channel $x .= new; $x.Supply.tap: &say; $x.close; await $x
22:52 camelia rakudo-moar 4079f7: OUTPUT: «Cannot receive a message on a closed channel␤  in block <unit> at <tmp> line 1␤␤»
22:52 ugexe is it possible its not finished "processing" the message though
22:52 eveo s: &await, \(Channel.new)
22:52 SourceBaby eveo, Sauce is at https://github.com/rakudo/rakudo/blob/3a9d8e7/src/core/asyncops.pm#L18
22:52 eveo ugexe: but you can close a channel with some messages still in it
22:53 ugexe oh
22:53 eveo m: my Channel $x .= new; $x.send: 42; $x.close; say $x.receive;
22:53 camelia rakudo-moar 4079f7: OUTPUT: «42␤»
22:53 eveo m: my Channel $x .= new; $x.send: 42; $x.close; say await $x
22:53 camelia rakudo-moar 4079f7: OUTPUT: «42␤»
22:54 eveo I'm guessing it's something with Channel.Supply
22:56 ugexe m: my Channel $x .= new; $x.Supply.tap: &say; $x.close; say $x.closed; await $x
22:56 ugexe dunno what that means, but it probably means something
22:56 camelia rakudo-moar 4079f7: OUTPUT: «(timeout)Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 16, uncaught_handler => Callable), status => PromiseStatus::Kept)␤»
22:59 TimToady joined #perl6-dev
22:59 BenGoldberg joined #perl6-dev
23:01 timotimo m: my Channel $x .= new; $x.closed.then({ .perl.say }); $x.send("hi"); $x.close
23:01 camelia rakudo-moar 4079f7: ( no output )
23:01 timotimo m: my Channel $x .= new; $x.closed.then({ .perl.say }); $x.send("hi"); $x.close; await $x.closed
23:02 awwaiid joined #perl6-dev
23:02 camelia rakudo-moar 4079f7: OUTPUT: «(timeout)»
23:02 timotimo oh, wrong thing
23:02 timotimo m: my Channel $x .= new; $x.Promise.then({ .perl.say }); $x.send("hi"); $x.close; await $x.closed
23:02 camelia rakudo-moar 4079f7: OUTPUT: «No such method 'Promise' for invocant of type 'Channel'␤  in block <unit> at <tmp> line 1␤␤»
23:02 timotimo mhm
23:02 timotimo *shrug*, not something i've experimented with yet
23:05 Ben_Goldberg joined #perl6-dev
23:09 Ben_Goldberg joined #perl6-dev
23:23 awwaiid joined #perl6-dev
23:28 awwaiid joined #perl6-dev
23:34 awwaiid joined #perl6-dev
23:40 awwaiid joined #perl6-dev
23:46 awwaiid joined #perl6-dev
23:51 awwaiid joined #perl6-dev

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