9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] Plan9 development
Date: Mon, 15 Nov 2010 06:05:31 +0100	[thread overview]
Message-ID: <4CE0BF9B.5040700@gmx.net> (raw)
In-Reply-To: <2972B139-9F41-4F6F-B906-7249E0B5CCCF@vaughan.pe>

On 15.11.2010 05:29, Gary V. Vaughan wrote:
> On 14 Nov 2010, at 17:50, Carl-Daniel Hailfinger wrote:
>
>> On 14.11.2010 10:10, tlaronde@polynum.com wrote:
>>
>>> Furthermore, the auto* and libtool were typically made
>>> for trying to do something "working" to some extend with a chaotic
>>> source. They typically manage to compile "things" written by
>>> programmers who have been encouraged to look at the finger ignoring
>>> the moon: to concentrate on the "GNU" tools and "GNU" libraries
>>> etc, and not on C89 (or C99), POSIX etc.
>>>
>>>
>> Heh. Pure C99 code (with no GNU extensions or OS specific stuff
>> whatsoever) doesn't compile with pcc unless you avoid some of the really
>> useful features and some of the standard headers. I can quote the C99
>> standard if you doubt this.
>>
>
> Even then, many vendor compilers and linkers have many non-conformances,
> and outright bugs.  Take a look at the number of workarounds that make
> their way into gnulib to cover breakage in the POSIX APIs alone.
>
> You can either try to remember what all of those are, or use something
> like autoconf to probe for known bugs, and gnulib to plug them, or
> you can link against a shim library like GNU libposix which will
> do all of that automatically when it is built and installed, allowing
> you to write to the POSIX APIs with impunity.
>

Oh, I don't doubt that there is lots of API breakage on various unixes.
However, I hope that printf, scanf, fopen and similar basic functions
are working well in all those environments. That said, non-portable
constructs like mmap have to be avoided (or at least wrapped in some
cross-platform interface) once you want to run software on Windows. And
AFAIK hardware accesses are totally non-portable anyway. libpci/pciutils
and X.org have their own abstraction layer  for this, and flashrom uses
its own abstraction layer as well. I have yet to find a general purpose
library which handles hardware accesses and works on DOS, Windows, *BSD,
Linux, Solaris, MacOSX, ... X.org might be close, though.



>> I have successfully avoided using autoconf and similar stuff in my
>> projects by adhering to strict C99, but in an ironic twist of fate, Plan
>> 9 will be the OS that forces me to use something like autoconf due to
>> the limited C99 support.
>>
>
> And sadly, there is a good chance that your blind faith in having fully
> conformant APIs would come unstuck quite quickly if your code needed to
> work on a large selection of commercial UNIX releases (assuming you
> didn't code around all of those shortcomings in each of your projects
> that is).
>
> Plan 9 is far from alone in having limited C99 and POSIX API support.
>

So far this has not been a problem for flashrom, but that may also be
due to the really small number of commercial unixes being supported by
flashrom (no user interest, and thus pointless to port).
That said, having a full-featured compiler like clang or gcc available
allows coding for the compiler, and only to a lesser degree for the OS.

The good thing about flashrom is that it uses only very few interfaces,
and most of those need platform specific handling anyway.

Writing userspace software with a nice GUI and all sorts of bells and
whistles is probably a lot more prone to exercise broken code paths in
libraries than an app which has no interactive behaviour and avoids
pretty much every convenience feature. For such GUI apps it makes a lot
of sense to use an abstraction layer which hides/replaces broken
functionality in the envoronment.

Regards,
Carl-Daniel

--
http://www.hailfinger.org/




  reply	other threads:[~2010-11-15  5:05 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-04  9:36 Admiral Fukov
2010-11-04  9:47 ` Lucio De Re
2010-11-04 10:20   ` Steve Simon
2010-11-04 11:30 ` Brantley Coile
2010-11-04 15:39 ` David Leimbach
2010-11-04 15:55   ` Stanley Lieber
2010-11-04 16:01     ` John Floren
2010-11-04 16:39       ` ron minnich
2010-11-04 16:57         ` Stanley Lieber
2010-11-04 17:01         ` Don Bailey
2010-11-04 17:19         ` Jeff Sickel
2010-11-04 22:20           ` Charles Forsyth
2010-11-05  1:41             ` Venkatesh Srinivas
2010-11-05  3:50               ` Bruce Ellis
2010-11-05  7:11                 ` Lucio De Re
2010-11-05  7:55                   ` Bruce Ellis
2010-11-05 13:31                     ` Eric Van Hensbergen
2010-11-05 15:16                       ` C H Forsyth
2010-11-05 17:07                       ` dexen deVries
2010-11-05 17:18                         ` Nick LaForge
2010-11-05 17:32                           ` dexen deVries
2010-11-05 17:39                             ` andrey mirtchovski
2010-11-05 17:55                               ` dexen deVries
2010-11-05 17:45                             ` David Leimbach
2010-11-05 18:14                               ` erik quanstrom
2010-11-05 18:37                                 ` roger peppe
2010-11-05 19:06                                   ` erik quanstrom
2010-11-08 11:04                                     ` roger peppe
2010-11-08 21:24                                       ` Bruce Ellis
2010-11-08 22:22                                         ` Charles Forsyth
2010-11-08 22:25                                           ` Bruce Ellis
2010-11-08 22:33                                           ` Charles Forsyth
2010-11-09  2:10                                             ` Jeff Sickel
2010-11-09  3:18                                               ` EBo
2010-11-09  8:10                                                 ` Bruce Ellis
2010-11-13 19:15                                             ` Enrico Weigelt
2010-11-05 20:37                         ` Eric Van Hensbergen
2010-11-06  0:55                           ` Charles Forsyth
2010-11-06  2:20                         ` Bruce Ellis
2010-11-06 20:24                           ` dexen deVries
2010-11-05 18:43             ` Bakul Shah
2010-11-13 19:24         ` Enrico Weigelt
2010-11-14  2:17           ` Gary V. Vaughan
2010-11-14  5:47             ` Anthony Sorace
2010-11-14  6:24               ` erik quanstrom
2010-11-14  8:13                 ` Gary V. Vaughan
2010-11-14 15:56                   ` Jacob Todd
2010-11-14 16:24                     ` ron minnich
2010-11-14  6:26               ` Russ Cox
2010-11-14  8:03                 ` Anthony Sorace
2010-11-14 15:23                 ` erik quanstrom
2010-11-14 17:46                   ` Russ Cox
2010-11-14 22:16                     ` erik quanstrom
2010-11-14  9:10             ` tlaronde
2010-11-14  9:32               ` Gary V. Vaughan
2010-11-14 10:22                 ` tlaronde
2010-11-14 10:50               ` Carl-Daniel Hailfinger
2010-11-14 11:47                 ` tlaronde
2010-11-14 21:44                 ` Charles Forsyth
2010-11-14 21:47                   ` Ori Bernstein
2010-11-18  5:30                   ` Joel C. Salomon
2010-11-18  5:57                     ` erik quanstrom
2010-11-18 22:50                     ` Federico G. Benavento
2010-11-19  2:06                       ` Joel C. Salomon
2010-11-19  3:13                         ` Federico G. Benavento
2010-11-25  9:39                       ` Greg Comeau
2010-11-15  4:29                 ` Gary V. Vaughan
2010-11-15  5:05                   ` Carl-Daniel Hailfinger [this message]
2010-11-15 15:48                   ` Dan Cross
2010-11-15 16:24                     ` Lucio De Re
2010-11-15 17:26                       ` Brian L. Stuart
2010-11-16  3:32                         ` lucio
2010-11-16  4:53                           ` erik quanstrom
2010-11-16  5:09                             ` lucio
2010-11-16 22:18                           ` Christopher Nielsen
2010-11-15 18:11                   ` Dave Eckhardt
2010-11-15 20:04                     ` Steve Simon
     [not found]           ` <79E9F966-3C4E-44D9-8B1F-D22C9548CE74@gnu.org>
2010-11-15  1:02             ` Enrico Weigelt
2010-11-15  4:17               ` Gary V. Vaughan
2010-11-15 16:22                 ` erik quanstrom
2010-11-17 23:48                 ` Enrico Weigelt
2010-11-04 16:00   ` erik quanstrom
2010-11-04 17:12     ` Admiral Fukov
2010-11-04 17:19       ` andrey mirtchovski
2010-11-04 17:30         ` Admiral Fukov
2010-11-04 20:27     ` David Leimbach
2010-11-04 12:15 dexen deVries
2010-11-04 12:48 ` Venkatesh Srinivas
2010-11-04 17:14   ` Admiral Fukov
2010-11-17  7:38 Pavel Zholkover
2010-11-17  7:44 ` Lucio De Re

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CE0BF9B.5040700@gmx.net \
    --to=c-d.hailfinger.devel.2006@gmx.net \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).