Definition von Carriage Return und Line Feed
- Carriage Return (CR): Bewegt den Cursor an den linken Rand derselben Zeile
- Line Feed (LF): Bewegt den Cursor eine Zeile nach unten und scrollt die vorherigen Zeilen nach oben
- Newline (NL): Bewegt den Cursor eine Zeile nach unten und an den linken Rand
Beobachtungen
- CR und NL sind nützliche Steuerzeichen. NL ist die gebräuchlichste Operation, bei der eine neue Textzeile am linken Rand beginnt
- LF ist praktisch nutzlos. Niemand möchte mitten in einer Zeile in die nächste Zeile wechseln und in derselben Spalte weiterschreiben
- LF stammt aus der Ära mechanischer Fernschreiber vor etwa 70 Jahren
Historischer Hintergrund
- Fernschreiber druckten etwa 5 Zeichen pro Sekunde
- Die CRLF-Tradition entstand aus den mechanischen Beschränkungen von Fernschreibern in den 1950er Jahren
- In der Multix- und Unix-Ära setzte sich die Erkenntnis durch, dass es ineffizient ist, CRLF als NL zu verwenden
Die heutige Situation
- Heute wird CR als U+000d dargestellt, LF und NL als U+000a
- Die meisten modernen Maschinen verwenden U+000a nur als NL
- Einige Protokolle verlangen weiterhin CRLF, aber die meiste Software akzeptiert ein einzelnes NL
Aufruf zum Handeln
- Den Namen des Codepunkts U+000a von "Line Feed" in "Newline" ändern
- Die Übertragung unnötiger CR beenden
- Bei Protokollen, die CRLF verlangen, nur NL übertragen
- Software korrigieren, die einen Fehler auslöst, wenn sie NL ohne CR empfängt
Zusammenfassung und Autor
- Das Ende von CRLF ist seit Langem überfällig. Wir sollten gemeinsam daran arbeiten, dieses überholte Relikt zu beseitigen
- Autor: D. Richard Hipp, Gründer von SQLite
# GN⁺-Zusammenfassung
- Dieser Artikel erklärt den historischen Hintergrund und die heutige Ineffizienz von CRLF und fordert seine Abschaffung
- CRLF ist eine Tradition, die aus mechanischen Beschränkungen entstand und heute unnötige Komplexität verursacht
- Dieses Thema kann besonders für Programmierer und Softwareentwickler nützlich sein und ist für eine effiziente Datenübertragung wichtig
- Auch bei der Verwendung anderer Protokolle oder Systeme mit ähnlicher Funktionalität sollte die Notwendigkeit von CRLF überdacht werden
8 Kommentare
Ich verwende manchmal Zeilenvorschub....
Ganz schön radikal.
Laut einer Korrektur vom 14. Oktober wird der Änderungsvorschlag zurückgezogen.
Es geht dabei nicht einfach darum, nur ein einzelnes System zu ändern, sondern darum, das Protokoll und alle betroffenen Systeme schrittweise umzustellen. Meiner Ansicht nach war der Autor dabei wohl nicht vorsichtig genug.
Dachten sie wohl, dass der Nutzen der Abschaffung größer ist als die Kosten dafür?
CR+LF hat eine lange Geschichte...
Oh … das ist also der Grund ..
CRLF ist keine falsch definierte Spezifikation, sondern spiegelt die damalige Hardwareumgebung wider...
Es wirkt, als würde man die Abwärtskompatibilität vergessen und nur an den Moment denken.
Sollen wir die Protokolle jedes Mal komplett umkrempeln, wenn sich die Hardware-Spezifikationen ändern?
Ich bin weder dafür noch dagegen, es abzuschaffen.
Warum muss ich dabei nur an den Millennium-Bug denken?
Hacker-News-Kommentare
\r\n\nverwendet, was jedoch die Kompatibilität mit dem HTTP-Client von Zig beeinträchtigt.gitattribute-Datei lehren und dazu erziehen, das Byte Order Mark (BOM) abzulehnenCR LF . CR LFist, und es gibt auch Implementierungen, dieLF . LFerkennen