Fire is step THREE! | github.com/perl6/toolchain-bikeshed | Channel logs: irclog.perlgeek.de/perl6-toolchain/today | useful prior art: metacpan.org/pod/CPAN::Meta::Spec
Set by moderator on 19 March 2016.
02:49 FROGGS__ joined 07:50 domidumont joined 07:55 domidumont joined
nine ugexe: a Supply is an asynchronous interface. This may in itself be a worthwhile thing to have, but I'm reluctant to introduce asynchronicity as a side-effect of just wanting a generalized interface. 09:10
Seems like right now the only common interface to IO::Handle and IO::Socket is IO which doesn't mandate any methods. It's a shame that there's no common role for the methods sockets and handles share. 09:15
13:53 domidumont joined 15:09 cognominal joined
ugexe seems like there should be role interfaces to make up IO::Handle (IO::Reader, IO::Writer?) so you only need to mock/implement the parts of the interface that part provides 17:21
Easy enough to work around it with something like this gist.github.com/ugexe/fb1b470fc07650400c98, but thats just like cutting off someones hand so you can get past a biometric lock requirement 17:26
i could IO::Handle-ify IO::Socket (or ::INET) if I knew the idea made sense. but i think that might involve making IO::Handle a role itself (or at least implement a new role enforcing only the needed behavior here) 17:29
IO::Streamable seemed cool though. a (presumably) pluggable backend, then `IO::File.uri($url)` would return an IO::Streamable object (like IO::Handle but the resource may not exist yet) 17:42
anyway i should have something ready for some scrutiny by the end of this week. somehow i've spent over 50 hours in just trying different interface structures/conventions... 17:50
i also have a hunch there might be a problem with provides that are like `"XXX::Foo" : "lib/XXX/Foo.pm6", "XXX::FooBar", : "lib/XXX/FooBar.pm6"`. it looks like this would produce 2 different precomp files 17:55
er, libXXXFooBar.pm6 -> lib/XXX/Foo.pm6 (i.e. different module name, same file) 17:56
this partly ties into some META6 changes im doing where the <pm>[0]<file> stuff is not added in the provides. instead every file installed gets put into `files` (including provides), and every file in `files` can have a hash value with the neccesary meta data (<time> <cver> etc) 17:58
with the purpose of `files` containing every file that ends up installed as `$original-relative-path => $mangled-relative-path | { $mangled-relative-path => { <meta data> }`, and the rest of the meta data such that the original before-build-time manifest can be constructed against `files` 18:00
(its not expected this lookup will be used internally, but i also plan on writing a way to swap in an alternative to `files` that could use short-id files to mimick this) 18:01
via a Distribution::Installed, that gives you a Distribution interface to an already installed Distribution. so Distribution can roundtrip from installed back to Distribution, and thus other CURs can target Distribution as an intermediary 18:03
19:50 cognominal joined
[Coke] "make realclean" needs to kill .precomp directories. 23:43
[Coke] wonders why he had a lib:. directory in his build dir. 23:45