Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-toolchain, 2017-07-28

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

All times shown according to UTC.

Time Nick Message
00:18 ugexe ah moving the role outside of the method allows it to work
00:19 ugexe but for some reason declaring the role inside the method or applying the role anonymously would fail
01:53 ilbot3 joined #perl6-toolchain
01:53 Topic for #perl6-toolchain is now Fire is step THREE! | https://github.com/perl6/toolchain-bikeshed | Channel logs: http://irclog.perlgeek.de/perl6-toolchain/today | useful prior art: https://metacpan.org/pod/CPAN::Meta::Spec
02:05 ugexe nine: https://github.com/rakudo/rakudo/pull/1120/files I pushed it here
02:06 ugexe https://github.com/rakudo/rakudo/pull/1120/commits/a492cf27d5d893ba17dfa55f57bcc9cf08a4ce1a er the summary is here though
05:38 Cheery joined #perl6-toolchain
05:40 Cheery joined #perl6-toolchain
07:05 domidumont joined #perl6-toolchain
07:12 domidumont joined #perl6-toolchain
12:52 perlpilot joined #perl6-toolchain
13:35 perlpilot joined #perl6-toolchain
13:41 lizmat joined #perl6-toolchain
15:03 domidumont joined #perl6-toolchain
15:32 jdv79 joined #perl6-toolchain
16:19 ugexe i feel like we could also remove setting the version/auth/api in CompUnit.new in CURI by giving CU a way to use its $.distribution to obtain those
16:38 ugexe i would also propose implementing .candidates on ::FileSystem (or any CUR that can represent more than one file/module)
16:42 ugexe actually maybe we need to chain .candidates when calling .resolve.... because right now I'm thinking a if repo-1 has XXX:ver<2> and repo-2 has XXX:ver<3> that ver<2> would get loaded because that repo is seen first
16:43 ugexe ...which would explain some of the weird "why is this using the old version of my module?" that goes away when deleting ~/.perl6
16:44 ugexe i'm surprised we overlooked this
16:53 nine We didn't.
16:54 nine That was a concious choice. If you say :ver<2> suffices, you shouldn't complain when it gets loaded.
17:06 ugexe i mean when you say just 'XXX'
17:09 ugexe i thought this was understood as 'load the latest version', not 'load the latest version found in the first repo'
17:09 ugexe first repo with a match^
17:14 nine The only thing we guarantee is that you will get a module that matches your stated requirements. Given multiple matching ones, CompUnit::Repository::Installation happens to pick the highest one it has available.
18:10 ugexe so the problem with ~/.perl6 seems to be somewhat related. if you install zef v0.1.25 to site, and use that to install zef v0.1.24 to home, then `zef ...` will launch/use v0.1.24
18:22 nine But why would you install the older version?
18:25 ugexe 1: a dependency may have required that specific version 2: emulate the problem of updating an old rakudo, getting problems with zef (from IO refactor), finally figure out how to install a newer zef only to have it continue using the old version and continue giving the same errors
18:30 nine Considering all repos will not exactly do wonders for performance :/
18:35 ugexe i wouldnt think it would hurt performance much. the first lookup is already optimized to avoid as much io as possible, and after that its just looking up %!loaded{...} a few extra times
18:54 ugexe at the very least CompUnit::RepositoryRegistry.run-script should consider every repository
18:56 ugexe or rather, that the script it launches is using those libs
19:01 ugexe ah this is a problem with .script as what it returns gives no indication of the version, so you cant compare the results from multiple CURs in run-script
19:19 ugexe so whats happening is people have some old version of zef installed in ~/.perl6 and were likely using a newer version of zef installed to site ok. then they upgrade rakudo and .run-script starts grabbing the old version of zef because the wrapper no longer does a version sort over all candidates
19:24 ugexe on the bright side that means those weird problems, despite the hail mary delete ~/.perl6 always solving it, aren't precomp issues
19:28 ugexe i could add more info to the zef "Already installed" message as well to indicate where, which might be enough to nudge the majority into figuring out to uninstall from home
19:37 mspo joined #perl6-toolchain
19:38 mspo hi I'm trying to get reproducable builds into precomp/ and the timestamps in the middle of the path are not exactly working
19:38 mspo is there a way to tell install-dist.pl (or another method) to use a fixed path?
19:39 mspo for example compiling zen I have
19:39 mspo precomp/9AD391BB028FBF86169E02934A6181BA21049736.1497985253.01802/FE/FE48D13883ACBA2CF35E1746EEFE956A173BE8AE.repo-id  vs  precomp/6C3B1056A15F23B58ED8A7017D2C24B8F7524EB2.1501209729.51376/FE/FE48D13883ACBA2CF35E1746EEFE956A173BE8AE.repo-id
19:39 mspo s/zen/zef
19:51 ugexe im not sure, but just for some insight into a naive solution: change the timestamp to all 0 on initial install. this is naive because it only would work if you knew the dependency graph beforehand (which you can probably emulate by ordering META6.json provides perfectly) - but for it to actually figure this graph out it has to run the code, which (to oversimplify) will try to precompile each file and
19:51 ugexe if it fails it puts it at the end of the queue to try after trying everything else
19:52 ugexe so that timestamp would change each time it needs to retry to precompile
19:52 ugexe or something along those lines
19:54 ugexe which, btw, ordering your META6.json provides to the perfect precomp order should speed up a distribution's install time
19:55 mspo ugexe: this is only for bootstrapping stuff and packaging individual things into pkgsrc which has a requirement for reproducable-ish builds (file names, at least)
19:55 mspo ugexe: the timestamp is obvious but I don't know what the other stuff is: 6C3B1056A15F23B58ED8A7017D2C24B8F7524EB2
19:55 ugexe well, couldnt you just use rename to 0 out that time stamp before finalizing the package?
19:56 mspo just rename the entire middle part?  does that work?
19:56 mspo like moar could find it, I mean
19:56 ugexe im not sure but i suspect it would
19:56 mspo interesting
19:56 ugexe i'm failing to find where the code that generates that path is at heh
19:57 mspo ugexe: wouldn't it make more sense to add an option to the compiler? :)
19:57 mspo yeah I was looking too but this is my first time down the road
19:57 mspo so I'm miles away
19:57 mspo compunit something?
19:57 mspo PRECOMP_PREFIX would be nice
19:58 ugexe CompUnit::Precomp*
19:59 mspo here somewhere? https://github.com/rakudo/rakudo
19:59 mspo ah I need to go pick up my kid. bbl
20:05 ugexe a utility to capture RAKUDO_MODULE_DEBUG output from an install of a module could provide an author with an optimal provides order. that could be a neat little tool or mi-6 plugin
20:05 nine The timestamped thing is the compiler's id which is the serialization context's id + the timestamp
20:12 nine Oh that's not correct.
20:14 nine It's actually the sha1 hash of CORE.setting's source code + the timestamp at time of compilation.
20:15 nine What it doesn't include is the NQP code, i.e. src/Perl6/. With that it could be enough to enable reproducible builds.
20:24 nine ugexe: looks like our ::Installation repos will have to communicate a little. So the first matching one asks the following repo for a matching one with a higher version.
20:35 ugexe i think the version sort can be done inside of run-script the same way it used to - no intercommunication required - using .files and/or .candidates from PR#1120 by just changing
20:35 ugexe `my $matches-file := $_.grep: { .meta<files>{$file} }` to `my $matches-file := $_.grep: { .meta<source> eq $file || .meta<files>{$file} }`
20:36 ugexe since the distributions all use the fast path and include <source>
20:37 ugexe e.g. .meta<source> would not call self!dist, but .meta<files>{$file} would
21:06 mspo nine: so my CORE.setting must be different since the first part of my file path was also different
21:06 mspo {CORE.setting}.unix.milliseconds/module_hash{2}/module_hash?
21:06 mspo something like that?
21:07 mspo anyway is there a way for me to influence this or do I need to wait until something is changed?

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