unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Frank da Cruz <fdc@columbia.edu>
To: Paul Eggert <eggert@cs.ucla.edu>
Cc: Liam Stitt <stittl@cuug.ab.ca>, Frank da Cruz <fdc@columbia.edu>,
	Mike <michael@rmrco.com>,
	GNU C Library <libc-alpha@sourceware.org>
Subject: Re: C-kermit fails
Date: Fri, 24 Jul 2020 19:45:47 -0400	[thread overview]
Message-ID: <CAKqtx9_MuOj0wm_aTNakkSu_JsaMLagzoH_XQ1Xo2WBzQ_bv+w@mail.gmail.com> (raw)
In-Reply-To: <f44458fd-1a4e-5f0d-7498-6f23548cb2c1@cs.ucla.edu>

 The reason I use getchar/getc is that Kernighan and Plauger recommend it
because it's buffered and avoids needless context switches.  I'm sure you
guys don't care much about the efficiency of character loops, but some of
the ancient machines where C-Kermit runs are pretty slow.  Computers and
operating systems are supposed to serve the needs of human beings.  But
when you make non-backward-compatible changes to operating systems that
break existing applications, you force people to stop what they are working
on (a cure for some deadly disease, perhaps) and search for a new version
of the application they were using that "complies" with the new "standard",
and then, not finding one, hunt down and contact the developers, if they
are still alive, and beg them to "update" their software.  When you think
of a more "correct" way of accomplishing something, by all means add it to
the system, but without removing the old way, so existing software
continues to run.  Unix is supposed to be a family of operating systems
among which software source code is portable, allowing a degree of freedom
in computer purchases.  It's not perfect, to be sure, as anyone who looks
at the #ifdef soup in the C-Kermit code can attest, but it sure beats the
situation back in the early 80s, when most universities had DECSYSTEM-20s
and all the software was written in languages that didn't exist on any
other platform and certainly don't exist today (Macro-20, SAIL, BCPL..).
At Columbia U the transition from DEC-20 to Unix (DEC Ultrix at first) was
a massive job; NO software could be ported, all the applications had to be
rewritten from scratch, in C of course.  But going from Ultrix to SunOS to
Solaris and finally to Linux was relatively painless.  So I think the
objective of Unix OS developers should be *towards* compatibility rather
than away from it, as seems to be the case with glibc.

- Frank

On Fri, Jul 24, 2020 at 5:07 PM Paul Eggert <eggert@cs.ucla.edu> wrote:

> On 7/24/20 12:41 PM, Frank da Cruz wrote:
> > So casually removing something from
> > your header files is kind of like a COVID-19 virus
>
> This strikes me as a bit unfair, as those parts of the header files have
> always
> been explicitly private.
>
> Zack is right that C-Kermit's best bet for portability/reliability is to
> remove
> uses of getchar/getc. This would render unnecessary that unportable cruft
> in
> ckucmd.c.
>
> If age and experience is a qualification for an opinion here, I will
> confess
> that I've also been writing code since the 1960s, and my opinion is that
> programs that stick their fingers into stdio's internals bear the
> responsibility
> for the consequences. And I write this despite helping to maintain code
> (Gnulib)
> that does exactly what C-Kermit's ckucmd.c does. When the new glibc came
> out the
> Gnulib developers didn't complain that glibc's changes were "like a
> COVID-19
> virus"; we simply adapted Gnulib and moved on.
>

  reply	other threads:[~2020-07-24 23:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-24 16:29 C-kermit fails Mike
2020-07-24 16:33 ` Florian Weimer
2020-07-24 17:36 ` Zack Weinberg
2020-07-24 18:47   ` Paul Eggert
2020-07-24 19:41     ` Frank da Cruz
2020-07-24 19:45       ` Frank da Cruz
2020-07-24 20:05       ` Zack Weinberg
2020-07-27  8:10         ` Florian Weimer via Libc-alpha
2020-07-24 21:07       ` Paul Eggert
2020-07-24 23:45         ` Frank da Cruz [this message]
2020-07-25  1:59           ` Paul Eggert
2020-07-31 12:41           ` Maciej W. Rozycki
2020-07-31 18:22             ` Frank da Cruz
2020-07-31 20:23               ` Paul Eggert
2020-08-01  0:17                 ` Frank da Cruz
2020-08-01  8:07                   ` Paul Eggert

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

  List information: https://www.gnu.org/software/libc/involved.html

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

  git send-email \
    --in-reply-to=CAKqtx9_MuOj0wm_aTNakkSu_JsaMLagzoH_XQ1Xo2WBzQ_bv+w@mail.gmail.com \
    --to=fdc@columbia.edu \
    --cc=eggert@cs.ucla.edu \
    --cc=libc-alpha@sourceware.org \
    --cc=michael@rmrco.com \
    --cc=stittl@cuug.ab.ca \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).