[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bits from the FTPMaster meeting



* Felipe Sateler <fsateler@gmail.com> [091118 23:39]:
>> You apparently fail to see that building the packages on mips uncovers
>> bugs that would otherwise be there, but take a longer time to uncover on
>> the 'mainstream' platforms.
>
> This is not generally true. There are are classes of bugs that appear on
> different platforms _due to being different platforms_, not just because
> they were latent bugs waiting to be discovered. I presume that packages
> that require as much efficiency as possible (like Charles is implying in
> his packages) are very likely to implement platform-specific
> hacks/optimizations to run faster. It can be considered bad design, ugly
> and whatnot, but it is irrelevant if nobody ever uses other platforms.

But even in this class lazily disabling build on obscure architectures
can have severe downsizes:

- the platform-specific hacks usually work (or are not an problem of the
  slower architectures, because there are typically no hacks for them).
  What in my experience breaks is the unoptimized fall back code path.
  Having that one tested and working makes it much easier for future porters
  for new architectures you might actually care for.

- platform-specific characteristica are not guaranteed to stay obscure.
  I doubt amd64 would have had much more trouble if the alpha port would
  not have had several years to fix all those little 64 bit errors.
  (It would have been quite easy back then to claim that some strange
   display errors in some little graphical games are not worth the
   efford to fix as noone would buy and run an alpha to play games).

- a big issue outside i386 is alignment. People coming from i386 are
  used to cast pointers without any ill effects. Having the other
  architectures fixing this bugs makes not only i386 faster by avoiding
  uncatched unaligned issuses. But it also future-proofes the code, as
  even in x86 processors the new vectorisation support has alignment
  requirements.

- very often only the more obscure architectures may break but that's
  because some specific things in that architecture break some invalid
  code, often supposed to be some clever "optimisation". While there
  are optimisations that are valid C code and still platform specific,
  there are more of them that actually misuse undefined behaviour.
  While those "clever tricks" work now, they may break with every new
  compiler version because new optimisations in the compiler easily
  break the invalid code. Those are usually some of the most hardest
  things to track down (which also explains why many "porting issues"
  so often appear to intel-centric maintainers as making no progress,
  as they usually take this time even if they hit a mainline
  architecture. Only that this does not happen so often as it hit an
  less common architecture first and was resolved there already).

Hochachtungsvoll,
	Bernhard R. Link
-- 
"Never contain programs so few bugs, as when no debugging tools are available!"
	Niklaus Wirth


Reply to: