[HN Gopher] The End-of-Line Story (2004)
___________________________________________________________________
The End-of-Line Story (2004)
Author : susam
Score : 47 points
Date : 2024-06-22 12:55 UTC (2 days ago)
(HTM) web link (www.rfc-editor.org)
(TXT) w3m dump (www.rfc-editor.org)
| ktpsns wrote:
| I haven't seen end-of-line conversion problems (as well as
| Unicode BOMs) for decades. My guess is that software quality
| improved these days. MS Notepad was a noteable tool which always
| mocked around with unix-style line endings. Using dos2unix and
| unix2dos utilities was something I commonly used in the early
| 2000s, in particular on dual boot computers. This was also the
| time where UTF-8 was not yet so widespread, but that is another
| topic ;-)
| don-code wrote:
| Sad to say, I filed a bug in an internal tool just two weeks
| ago relating to how it processes Windows linebreaks. The tool
| is written using modern languages (Python 3.11) and frameworks
| (FastAPI).
| yjftsjthsd-h wrote:
| I can easily believe that it's gotten better, but I've hit it
| within the last 6 months; Microsoft Azure DevOps git[0] has a
| web editor that defaults to Windows-style EOL, and if you use
| it to deploy files to boxes running a Linux distro then some
| tools will completely break on config files that aren't using
| unix-style EOL. _Ask me how I know._ That was fun to fix. For
| bonus points, _some_ programs on Linux _are_ compatible with
| either line ending-_-
|
| [0] I expect this isn't its real name, but it's MS so that's a
| lost cause.
| drdec wrote:
| > This choice was designed to spread the pain equally among all
| operating systems of the day; each has to translate to and from
| the CR LF convention when text was transferred across the
| network.
|
| On the one hand, this seems clever and fair. On the other hand,
| this is why we can't have nice things.
| Someone wrote:
| According tithe article, it wasn't even true. FTA:
|
| _"Early operating system designers had to adopt some "end-of-
| line" convention using CR and LF; some used LF, some used CR,
| and some used a two-octet sequence: LF CR or CR LF."_
|
| = OSes that used CR LF didn't have to do that translation.
| gary_0 wrote:
| Nowadays I see in-flight EOL normalization as Considered Harmful;
| instead I ensure that routines dealing with text buffers treat
| both CRLF and LF as the same. This has Just Worked without any
| issues in the software I've written with this approach.
| (Occasionally this requires wrapping/replacing library code that
| only uses the EOL convention of the host system.)
|
| I have encountered numerous issues with EOLs being changed in
| transit or on disk, so I always make sure to open/transfer files
| in "binary mode", since both Windows and Linux builds will run
| the same EOL-agnostic code.
| chasil wrote:
| This goes back further.
|
| Teletype machines needed a delay to move the printing apparatus
| back to the beginning of a line. The two characters provided that
| delay.
|
| I never used one of these; I was too young.
|
| https://en.m.wikipedia.org/wiki/Teletype_Model_33
|
| Edit: first google hit:
|
| https://www.revk.uk/2022/02/crlf-has-long-history.html?m=1
| Stratoscope wrote:
| I learned to program in high school on a Teletype Model 33 ASR
| that dialed into to a timesharing service. This was the version
| with a paper tape punch and reader.
|
| Dial-up time was very expensive, somewhere around $50/hour in
| today's dollars.
|
| So we would punch our code onto a paper tape, then print it out
| locally to review it, and finally dial in, run the paper tape
| through and wait for the printout from our program, and
| immediately disconnect.
|
| In theory, CR LF should have been enough at the end of a line,
| but we found that sometimes, especially after a long line, the
| next line would start printing before the paper had fully
| advanced.
|
| To play it safe, we would punch CR LF RUBOUT. RUBOUT was a
| character with all eight holes punched in the tape, i.e. 0xFF.
| By convention, this code was ignored by any system that
| received it.
|
| The intended use of RUBOUT was to correct an error you made
| when punching a tape. You would back up the tape as many
| characters as you got wrong, then punch that many RUBOUTs, and
| continue from there. Because RUBOUT had every hole punched out,
| it would erase any error.
|
| And it also served to give the paper a little more time to
| advance when we punched CR LF RUBOUT.
|
| Maybe our machine was in need of some oiling or adjustment. The
| Model 33 was designed as a light-duty machine, unlike the more
| rugged Models 28 and 35.
| Animats wrote:
| > Maybe our machine was in need of some oiling or adjustment.
| The Model 33 was designed as a light-duty machine, unlike the
| more rugged Models 28 and 35.
|
| Yes. The spec for the Model 33 says that it is rated for one
| year of continuous operation without lubrication, three years
| with lubrication.
|
| The models 14, 15, 28, and 35 were designed for a _much_
| longer life. I have some Model 14 machines coming up on a
| century and still working. But there is a price to be paid in
| maintenance and lubrication. Those machines are totally
| repairable - you can take them completely apart and put them
| back together. I 've overhauled five of the older machines.
| There are over 600 oiling points, and you need both oil and
| two different greases. Nobody would tolerate an office
| machine today that required such maintenance.
|
| Think about that when you look at iFixit scores.
___________________________________________________________________
(page generated 2024-06-24 23:02 UTC)