Carriage return ve line feed tanımı
- Carriage return (CR): İmleci aynı satırın sol kenar boşluğuna taşır
- Line feed (LF): İmleci bir satır aşağı taşır ve önceki satırları yukarı kaydırır
- Newline (NL): İmleci bir satır aşağı taşır ve sol kenar boşluğuna götürür
Gözlemler
- CR ve NL kullanışlı kontrol karakterleridir. NL en yaygın işlemdir; metnin yeni satırını sol kenar boşluğundan başlatır
- LF pratikte işe yaramaz. Kimse bir satırın ortasından bir sonraki satıra inip aynı sütunda yazmaya devam etmek istemez
- LF yaklaşık 70 yıl önce mekanik teletypewriter döneminden gelir
Tarihsel arka plan
- Teletypewriter cihazları 5 saniyede yaklaşık 5 karakter basardı
- CRLF geleneği, 1950'lerdeki teletypewriter'ların mekanik sınırlamalarından kaynaklandı
- Multix ve Unix döneminde, CRLF'yi NL için kullanmanın verimsiz olduğu anlayışı yaygınlaştı
Günümüzdeki durum
- Bugün CR, U+000d olarak; LF ve NL ise U+000a olarak temsil edilir
- Modern makinelerin çoğu U+000a'yı yalnızca NL olarak kullanır
- Bazı protokoller hâlâ CRLF gerektirir, ancak yazılımların çoğu tek bir NL'yi kabul eder
Eylem çağrısı
- U+000a kod noktasının adını "line feed" yerine "newline" olarak değiştirin
- Gereksiz CR iletimini durdurun
- CRLF gerektiren protokollere yalnızca NL gönderin
- CR olmadan NL alındığında hata veren yazılımları düzeltin
Özet ve yazar
- CRLF'nin sonu çoktan gelmeliydi. Bu modası geçmiş kalıntıyı ortadan kaldırmak için birlikte çalışmalıyız
- Yazar: SQLite'ın kurucusu D. Richard Hipp
# GN⁺ özeti
- Bu yazı, CRLF'nin tarihsel arka planını ve günümüzdeki verimsizliğini açıklıyor ve kaldırılması çağrısı yapıyor
- CRLF, mekanik sınırlamalardan doğan bir gelenek olarak günümüzde gereksiz karmaşıklık yaratıyor
- Bu konu özellikle programcılar ve yazılım geliştiriciler için yararlı olabilir; verimli veri iletimi açısından önemlidir
- Benzer işlevlere sahip başka protokoller veya sistemler kullanılırken de CRLF gerekliliğinin yeniden değerlendirilmesi gerekir
8 yorum
Satır sonu beslemesini bazen kullanıyorum....
Gerçekten epey sertmiş 😱
14 Ekim’deki düzeltmeye göre değişiklik önerisinin geri çekildiği söyleniyor.
Bu, yalnızca tek bir sistemi değiştirmek değil; protokolü ve etkilenen tüm sistemleri kademeli olarak değiştirmeyi gerektiren bir iş. Bana göre yazar bu konuda yeterince temkinli davranmamış gibi görünüyor.
Ortadan kaldırmanın maliyetinden çok, kaldırılmasının sağlayacağı faydanın daha büyük olacağını mı düşündüler?
CR+LF'nin uzun bir geçmişi var...
Oo... sebebi buymuş..
CRLF yanlış tanımlanmış bir spesifikasyon da değil, dönemin donanım ortamını yansıtan bir şeydi...
Geriye dönük uyumluluğu unutup sadece bu anı düşündüklerini sanıyorum.
Donanım özellikleri her değiştiğinde protokolleri baştan mı yazmalıyız?
Kaldırılmasından yana da değilim karşı da değilim.
Aklıma neden Y2K sorunu geldi acaba?
Hacker News görüşü
\r\nyerine\nkullanacak şekilde güncellendi, ancak bu Zig'in HTTP istemcisiyle uyumluluğu bozdu.gitattributedosyasının nasıl kullanılacağının öğretilmesi ve Byte Order Mark'tan nefret edecek şekilde eğitim verilmesi gerektiği savunuluyor