18:13 ilbot3 joined
moderator Discussion area for the Perl 6 toolchain | github.com/perl6/toolchain-bikeshed
nine The rest has either already been fixed and just awaits confirmation by the reporter or are straight implementation bugs. 18:13
18:27 lizmat joined
nine is the irclog already on? 18:29
flussence nope
lizmat is listening :-) 18:30
flussence moritz runs the logbot, so we'll have to wait until he's got a free moment
(AIUI, might be a while) 18:31
mst if anything important happens, I can supply
nine Just to get that thought on record: while system wide precompilation is really hard, what's easy is to provide precompiled versions of leaf modules system wide, i.e. modules that have no dependencies. 18:33
lizmat nine: this is about packaging ? 18:34
nine More or less. Packaging makes the issue much more visible. But even without packaging we currently don't use the system precomp files.
That's why I think the next step should actually be to disable precomp on installation as it's pretty useless as it is right now. 18:35
mst I think we should kill system precomp for the moment
nine However that does not mean that I want to rip out the code completely.
mst focus on making sure the ~/.perl6 version is solid
then re-introduce system precomp more thoughtfully
with a view to packaging
somebody should look at how distros do stuff like link optimisation 18:36
nine I think we should later go back and add it back in step by step maybe beginning for example with those leaf modules.
mst which is a post-install step that cares about transitive dependencies
18:36 lucasb joined
mst that might give us some insight into what we can do in the same vein 18:36
nine lucasb, alpha123: I'd need your github ids for github.com/perl6/toolchain-bikeshed 18:37
mst we must remember to drag leont in too, since while he's been doing testing, I full expect this place to end up being the intersection of installation, testing and packaging 18:38
since that's basically what's happend with perl5
lucasb oh hai, nine! thanks for the invite, but I'll probably not be editing that repo. I just came here out of curiosity :)
mst lucasb: I'm sorry, did you confuse us with people who were offering you a choice? 18:39
github id please, you can always just not use the commit bit :)
lizmat nine: for my understanding: would that mean we would need to re-install modules after each setting compile ?
because I think it's *very* important we keep at least that 18:40
mst re-install? 18:41
flussence s/install/compile/? 18:42
mst lizmat: ?
nine lizmat: no, never re-install
alpha123 nine: yeah I'm just here because it's interesting, I'm probably not that useful
lizmat nine: *phew*
nine lizmat: it's all about re-compilation
mst alpha123: I've heard that many times before. github id anyway please, even if you only ever use it once it was still 100% better than not 18:43
lizmat feels to me that the only way to fix precomp with packaging, is to allow relative paths ? 18:45
nine Btw. I hate that I didn't rip out the version directories in ~/.perl6. Because they mean that you have to re-install modules installed to your $HOME after upgrading rakudo.
alpha123 mst: github.com/alpha123
mst nine: we can turn that ibnto one command in an installer
generally, speaking as a local::lib author, I hate that I didn't put version directories in there by default 18:46
though that was mostly an XS module thing
nine lizmat: precomp can only work with leaf packages or when the precompilation happens in a post-install script. Otherwise we'd end up changing packaged files which is a no-go
mst I think post-install script may be very viable though
anything else would require packaging N*M*O*P*Q versions or something similarly insane
nine mst: true, it's totally safe to just rename the version directory to the newer version... at least right now 18:47
mst nine: yeah, and later if it ever isn't, we'll be glad to've had the choice
so ... I think solve it via tooling is correct
could even have a rakudobrew step that automatically shifts stuff for you
lizmat I can't help but thinking we would need to make precomp faster 18:48
s/faster/better/
I mean, we're talking about composability all of the time
nine Btw. if anyone has trouble following what I say, please just ask. I've been thinking about this stuff for weeks on straight. Some things may be very obvious to me and totally nonsensical to everyone else.
lizmat yet, precomp files are anything but composable
mst if precomp didn't require all transitive deps
right
nine even if you're just here out of curiosity! ^^^^
mst right, confused newbies are a *great* tool for forcing people to clarify their thinking 18:49
lizmat so before we try to fix the problem at this level
I wonder what is making it so hard to have composable precomp
nine Well our precomp is static linking with dynamic loading of the linked code. A combination that's difficult to handle.
lucasb idk much, but the only opinion I have about this is to *not* nest the site and vendor directories inside the perl/core one. I think it would be cleaner with they existed at the same level. I already told nine about this and he was kindly to acknowledge the situation. But I understand changing this now would inflict having to keep telling new users to "nuke everything".
lizmat well, to me that just feels like another layer of punisihing core devs 18:50
to an extent, I feel like I'm my boss now, many years ago
mst I don't think we have to tell new users to nuke everything 18:51
nine But having pure static linking with embedded code wouldn't be that much better. Because then installing a new version of some dependency would still not make the reverse-dependencies use the new code, confusing the users.
lizmat when I told my boss that what he wanted, wasn't possible
mst I think we'll just need to figure out how to upgrade things under them without them noticing
lizmat guess what, in the end it turned out to be possible after all
even though I was convinced it couldn't be done
nine mst: yes, we just need to detect the crewup in the install script and move some directories. Manageable.
lizmat: been there, done that :) 18:52
mst composability of precomp files is above my pay grade right now
but no matter what, I think 'fall back to .perl6, then start again carefully' is going to be a great option
means we're less likely to trap ourselves so badly
nine And it means that we have loads of time.
mst and I'd rather look at cleaning up the non-precomp CUR stuff first and making that a bit more flexible and making sure that can be packaged 18:53
and then we weave precomp into it after that
nine lucasb: please add the moving of the perl6 repo to github.com/perl6/toolchain-bikeshe.../README.md as todo
lucasb nine: can I just open a issue instead? issues are better, they can be commented on. 18:54
flussence my 2Ā¢ is that it shouldn't put anything in "system" dirs by default, that ought to require some sort of `perl6 --I'm-doing-something-fancy` invocation
that'd neatly skip having to put a bunch of mkdir juggling right in the compunit code, because IMO that sort of stuff belongs in makefiles 18:55
mst the compunit code's mkdir juggling is hilariously wrong and awful, but I've not had a chance to go through and work out what it's supposed to be yet 18:56
flussence and since perl6 is being positioned as a compiler, there's nothing wrong with giving it a million command line switches for this sort of stuff. Every other compiler does it 18:58
nine mst: the mkdir juggling was just one of those shortcuts that made it into released code. It's really make install that should create the system repos and it does. Except for the precomp directory in each repo I think. I missed that. 19:07
But the mkdir code also helps with ~/.perl6 where make install won't do anything
mst I think "first .install() into a CUR creates the directories" is likely best
lizmat nine: is @*INC still a thing, or not ?
nine lizmat: nope, that's gone 19:08
lizmat ok, because src/core/CompUnit/RepositoryRegistry.pm seems to still contain references to it 19:09
as does ModuleLoader.nqp 19:10
nine oh in method files
lizmat I will get out the chansaw
nine CompUnit::RepositoryRegistry::files can go alltogether.
lizmat nine: will make it so 19:13
nine: so what's up with @INC in method setup-repositories() ? 19:16
nine That's just a local variable with a recognizable name 19:17
lizmat nine: ah, I see... it's only used internally
nine just for confusing the reader ;) 19:18
19:22 tadzik joined
flussence yayit'stadzik! 19:22
tadzik \\o/ 19:23
I'll lurk here :)
flussence yeah yeah, that's what I said about #moarvm... :) 19:24
tadzik :P 19:25
mst tadzik: but you're already the author of a key toolchain component accidentally 19:26
several of the things I have in mind are going to lean on rakudobrew ;) 19:27
tadzik yeah, panda also became the thing for a while :P 19:30
mst I think we'll need to pop a couple more components off the yak stack before I start having ideas that'll lean on panda 19:35
so depending on how uppity shadowcat's customers are you may yet get a fair stay of exeuction there ;)
tadzik :o 19:38
aw, shucks, I was planning to transfer all my stuff to community org and retire :D
19:39 Zoffix joined 19:40 ugexe joined 20:03 diakopter joined
diakopter such solace 20:06
[Coke] If tadzik wants, we can fork panda and keep the "official" copy in perl6 to avoid pain. 20:08
(I'm also happy to leave it where it is)
mst I trhink transferring stuff to orgs is a good thing in general 20:10
I think we can't afford to let tadzik escape just yet either way ;)
tadzik *blushes* 20:11
well, almost all I ever did in Perl 6 was dogfooding 20:12
now I don't really use Perl 6 anymore, the interests have shifted, so I don't really work on my stuff these days
(because I don't really need it)
mst right, so let's get the repos into community orgs
and you can stick around and answer stupid questions while we figure out who's running with the baton next 20:13
tadzik at times when I do use Perl 6 all my stuff just works for me, largely because of all the awesome people who quickfix it :)
lucasb tadzik++ # for all the cool stuff he did 20:16
I'm +1 for moving rakudobrew and panda to perl6 org
diakopter + 20:19
mst right, then it'll be easier for us to inflict commit bits on people 20:21
20:21 FROGGS joined
FROGGS o7 20:21
tadzik oh hai
diakopter nine: lol 20:23
FROGGS can I ask my panda/star related questions too? 20:24
nine absolutely
FROGGS cool 20:25
so, I bootstrap panda in star, and it just goes off to test and install panda
without testing and installing its deps
mst I was expecting we'd cover CompUnitRepo, Precomp, testing, installers, and packagers in here
FROGGS maybe...
mst basically the whole spectrum
FROGGS maybe I have to delete the statefile...
mst needs to summon leont
tadzik :3
flussence puts on Fake Gentoo Maintainer hat
nine FROGGS: oh yes, panda's statefile may interfere 20:26
mst amusingly, when panda bootstraps itself, it doesn't record its own deps in its statefile
FROGGS ohh, that looks better!
mst that took me a moment of confusion when trying to test 'panda --installed list'
tadzik that's a bug
nine By now I would really, really like to get rid of it :) So unless someone brings up an argument soonish, I'm gonna merge the query_repos branch 20:27
mst I was chasing lizmat's rakudobug at the time so didn't care that much
nine One thing that's keeping me from ripping the statefile out: it carries (literally) one extra bit of information: a flag if something was installed at user request or as dependency. 20:28
I don't know if panda is actually doing anything with this information, but it seems usefull.
tadzik which I put there so you can sensemakingly uninstall stuff at some point
with GC, so to say
I don't recall Perl 5 ever having that, and it always pissed me off 20:29
nine Yep, I figured.
But I don't know where else to store it.
mst lack of sensible uninstallation in perl5 is a multifacted clusterfuck 20:30
mst casts 'summon freebsd port nerd' 20:34
20:34 Kassandry joined
FROGGS btw, this is the panda patch needed for star: github.com/rakudo/star/blob/releas...ndir.patch 20:39
which is possibly not complete
and this is the rakudopatch: github.com/rakudo/star/blob/releas...ndir.patch 20:40
so, not much actually
mst flussence: were you doing an overlay for portage?
alpha123 mst: huh 20:41
flussence yep
gitlab.com/flussence/perl6-overlay 20:42
mst kassandry was pondering what'd be involved in getting a port going
alpha123 well we don't even have a perl6 port yet
or at least didnt
flussence right now I've got it down to a plain Configure.pl && make && make install pattern
FROGGS hmmm, I think I should "release" an RC0 of star... 20:43
flussence it's an overlay and not distro-upstream because moar & friends do a whole bunch of things gentoo's QA people hate
(which I've been writing down in the issue tracker there)
mst YAKS FOR THE YAK STACK 20:44
SKULLS FOR THE SKULL THRONE
diakopter oh no, he's uncorked
20:48 TimToady joined
nine FROGGS: looks sane at a first glance. I'm not sure I like it very much but can also not point to anything specific 20:57
FROGGS mhm 20:58
nine I think it's just that is pretty much a hack necessitated by the lack of design. And my utter reluctance to add API before we have a solid plan. 20:59
But clearly this is usefull and will be for distro packaging, too
FROGGS and maybe also useful for a repo that hists the modules non-locally 21:03
but the bin dir has to be in PATH, whatever you do, so it must be locally
not saying it's not a hack
mst so github.com/rakudo/star/blob/releas...ndir.patch 21:05
nine Just an observation: there's a 1:1 relation between ~/.perl6 and ~/bin and between /usr/share/perl6/site and /usr/bin
mst is basically just "pick the directory the shim scripts get generated into" ?
nine But of course, that's just on UNIX
mst: yes
mst FROGGS: of course, for non-local modules we may end up needing a smarter shim script, but yes, in theory, but oh gods let's leave that one to later 21:06
nine: though, btw, local-but-fetched-on-demand is one of the things I'd been thinking about as an alternative CUR format, with the per-repo format file thing I was talking about
(useful example to anchor the idea off if nothing else) 21:07
TimToady is this channel logged yet? 21:10
mst I believe it's scheduled to be, but isn't yet, but I have logs of everything if we discover we missed something
so "not publically, but nothing will be lost"
21:10 leont joined
FROGGS nine: if we're not going for the bindir hack, we need another way to specify the directory layout of a repo 21:11
mst I think having the shim dir configurable seems perfectly reasonable 21:12
lizmat nine: I'm looking at streamlining setup-repositories
FROGGS because currently a repo looks like: bin/, dist/, (panda/), resources/, short/, sources/, repo.lock
and no packager wants to put that in /usr
TimToady on the shared precomp thing, I always thought, if we really can guarantee immutability of a module and it's compiled results, a cron job that periodically goes off and copies identical unshared modules into a shared repo and deletes the unshared one could work out somehow and remove the objections of wasted space on a multi-user system 21:13
lizmat nine: I think I can get about 15 msecs off of each call, which which would mean something like 60 msecs improvement on loading something like Tex::CSV 21:14
TimToady *its
FROGGS so most of the repo will be in /usr/lib/.../perl6/... and the runners in /usr/bin
lizmat nine: so from 235 to 170 msecs
nine: do you think this is worth it at this point ?
(got most of the code already written btw) 21:15
mst TimToady: I suspect it may be doable via post-install scripts actually at each CUR level
oh, sorry, you're talking about space usage
tell them to get a better filesystem already ;) 21:16
(seriously, the world is moving towards single copy fses anyway)
leont always imagined packagers creating their own CUR subclass, to make p6 do whatever they wanted to
mst that wouldn't be terrible but I'd like "what they want it to" to be something I approve of, so making sure it leads them down that path would be preferable ;) 21:17
21:18 masak joined
FROGGS leont: yes, but we've got open gh issues about packagers that want to continue packaging star 21:25
leont: they'll learn how to create a nice cur eventually
21:26 thzre joined
mst also, frankly, vendors all doing things subtly and incompatible differently has been the bane of our fucking lives on the p5 side 21:26
I would rather minimise the extent to which they have to do that
and instead give them sufficient knobs to twiddle that they can have it "their way" atop a standard set of features
FROGGS most packagers (at least the few I know) are not hackers that want to ship their stuff 21:27
they use want us to fiddle it right and provide the right knobs 21:28
leont Fair enough 21:29
FROGGS but cur surely leaves options, and I like that
masak hi everybody. I'm just a Perl 6 user, but I'm very interested in #toolchain stuff, to the extent it can impede my productivity with Perl 6 ;) 21:30
FROGGS and even if a cur exists that goes in the wrong direction, they can fix it, because nothing relies on what the cur actually does internally 21:31
... or filesystem wise
masak: :o)
mst right, time to go meet $*GF
later all
FROGGS o/
FROGGS .oO( his dynamic girlfriend just callframed... ) 21:32
hoelzro o/ masak
nine lizmat: sure :) 21:42
lizmat okidoki :-) almost done
FROGGS ***ALL*** - just made an RC0 of rakudo star, as of today's codebase: froggs.de/perl6/rakudo-star-2016.01-RC0.tar.gz 21:43
***ALL*** - please test it and report bugs to the rakudo/star repository, but keep in mind it is an RC0, so dont update your production servers just now
(just because it is more visible here)
hoelzro \\o/ 21:44
FROGGS++
I like that ***ALL*** convention
FROGGS :o)
and it is not a netsplit, even :o)
nine TimToady: I'm not sure anyone has objections because of wated space (precomp files aren't that large) but because of every user on a system having to wait for the first compilation 21:45
FROGGS hmmm, does this problem exist? 21:46
not that many users touch my laptop or my servers actually
nine It's the one concrete issue that yesterday's discussion brought up IIRC, so it seems to be for at least some people. 21:48
hoelzro nine, TimToady: I'm pretty new to thinking about the whole precomp thing, but if a user is installing a module without admin perms, it seems like it should belong to that user only
admins should be able to create "global" installs of precomp'd module
nine hoelzro: that's what currently happens 21:49
hoelzro much like site lib and local::libs
nine: the current issue is that there are paths embedded in the precomp files, right?
nine if the site lib is not writable by the user, panda installs into ~/.perl6
FROGGS and the precomped product will always be a different one, because of timestamps etc
hoelzro true
nine hoelzro: that's one of the issues that make packaging harder
hoelzro right
I' 21:50
ugh
I'm not sure how I feel about ~/.perl6 by default, but that's a whole other story
nine hoelzro: add it to github.com/perl6/toolchain-bikeshed :) 21:51
hoelzro is that a panda policy or a CUR policy?
will do=)
nine it's panda's policy
hoelzro alright 21:52
which scripting languages (other than Perl 6 and Python) store compilation artifacts on disk?
nine leont: I've fantasized about a rpm database based CUR, but I'm not sure if it makes sense
TimToady well, if you use C as a scripting language... :P 21:53
hoelzro TimToady: ;)
leont I've tought the same (well, about deb though)
hoelzro I should clarify: languages that compile to a disk artifact without explicitly being asked
nine rpm does have name, version, vendor and more so at least that part would match
hoelzro import my_module in Python generates my_module.pyc transparently
another system that's quite different that may be useful to think about is .NET's GAC model 21:54
I can't speak to how well it works in practice, but it may provide good examples of what not to do =P
nine FROGGS: everything about those scripts is a hack. That repos have a bin/ directory was a quick hack to get panda going. Now we get $bin-dir. 22:01
FROGGS nine: no, these scripts are fine, really 22:07
nine: or do you think that dists are about modules only?
nine No, don't mind what I'm saying too much. I should be in bed instead of uttering nonsense :) 22:08
FROGGS then let's continue on another day :o) 22:11
gnight 22:12
lizmat gnight FROGGS 22:14
hoelzro night FROGGS 22:20
diakopter
.oO( .NET has a precomp thingie (also system-wide and per-user) called ngen... )
22:37
(native gen)
flussence ISTR niecza's readme advised running that for something or other 22:38
diakopter but it's opt-in because it strictly disables most of the JIT... at least, 8 years ago....... 22:39