W dniu pon, 26.02.2018 o godzinie 10∶09 -0800, użytkownik Zac Medico
napisał:
> On 02/26/2018 04:29 AM, Michał Górny wrote:
> > W dniu nie, 25.02.2018 o godzinie 17∶50 -0800, użytkownik Zac Medico
> > napisał:
> > > Add async_aux_get method that returns a Future and otherwise
> > > behaves identically to aux_get. Use async_aux_get to implement
> > > the synchronous aux_get method.
> > > 
> > > Bug: https://bugs.gentoo.org/648790
> > > ---
> > >  pym/portage/dbapi/porttree.py | 91 
> > > +++++++++++++++++++++++++++++++++----------
> > >  1 file changed, 70 insertions(+), 21 deletions(-)
> > > 
> > 
> > What's the exact use case? What's the gain, in numbers?
> 
> I'm planning to use the for repoman, since it commonly has to generate
> metadata for multiple packages a once, when dealing with ebuild or
> eclass modifications.
> 
> The gain in numbers is that it scales linearly with the number of
> available cores.
> 
> > This seems like a lot of added complexity.
> 
> It doesn't really add complexity, asynchronous code or this sort is
> already used throughout portage internals. Asynchronous methods like
> these are quite standard today, thanks to asyncio.
> 
> > With Portage being practically unmaintainable,
> 
> Any reasonably complex codebase appears to be unmaintainable to those
> who don't maintain it.
> 
> > I'm against any changes that make things worse without
> > clearly defined major benefit.
> 
> Transitioning to asynchronous interfaces like this is unavoidable as we
> move into the realm of asyncio compatibility.

I think we can agree that functions like aux_get() that rely on callers
providing constant parameters to obtain the necessary output are far
from optimal. I believe Portage should aim towards transitioning callers
to more object-oriented APIs.

That's why I'm opposed to *proliferating* bad APIs. Maybe I'm wrong but
I don't believe this code would be helpful in transitioning Portage to
object-oriented API.

-- 
Best regards,
Michał Górny


Reply via email to