Syncthing'in 2.0 sürümü, birçok önemli mimari değişiklik, performans iyileştirmesi ve yeni özellik getiriyor. Bu güncelleme, uygulamanın çekirdek bileşenlerinde yapılan köklü değişikliklerle daha kararlı, daha verimli ve daha kullanıcı dostu bir deneyim sunmayı hedefliyor.
Ana Değişiklikler:
- Veritabanı Altyapısı Değişikliği: Veritabanı arka ucu LevelDB'den SQLite'a geçirildi. Bu geçiş, daha anlaşılır bir yapı sunarken olası hataların da önüne geçmeyi amaçlıyor. İlk çalıştırmada büyük veri setleri için bu geçiş uzun sürebilir.
- Geliştirilmiş Günlük Sistemi:
- Günlük formatı, daha kolay okunabilen ve analiz edilebilen yapılandırılmış girişlere dönüştürüldü.
- Artık her paket için ayrı ayrı günlük seviyesi ayarlanabilir.
- WARNING (Uyarı) adında yeni bir günlük seviyesi eklendi.
- Silinen Öğelerin Yönetimi: Silinen öğeler artık veritabanında sonsuza kadar tutulmayacak, altı ay sonra unutulacaktır. Bu süre, yeni bir komut satırı seçeneğiyle değiştirilebilir veya tamamen devre dışı bırakılabilir.
- Komut Satırı Seçenekleri: Komut satırı seçeneklerinin ayrıştırılması modernleştirildi. Eski tek çizgi (-home) formatı artık desteklenmiyor, yerine çift çizgi (--home) formatı kullanılmalıdır. Bazı seçeneklerin adları değiştirilmiş ve artık ortam değişkenleri olarak da kabul ediliyor.
- Yavaşlama Olmadan Hız: Kaydırılan verilerin tespiti için kullanılan "rolling hash" yöntemi kaldırıldı. Bu özellik pratikte bir fayda sağlamadığı için kaldırılarak tarama ve senkronizasyon işlemleri daha hızlı ve daha verimli hale getirildi.
- Varsayılan Ayarlar: İlk çalıştırmada artık varsayılan bir klasör oluşturulmuyor. v2 cihazlar arasında varsayılan olarak birden fazla bağlantı (bir tanesi meta veri, ikisi veri değişimi için olmak üzere) kullanılıyor.
Yeni Özellikler ve İyileştirmeler:
- GUI İyileştirmeleri: Cihaz duraklatıldığında bağlantı hatalarının gösterilmesi engellendi ve Revert butonları yalnızca klasör boşta olduğunda görünecek şekilde ayarlandı.
- Yeni Bağlantı Teknolojileri:
- Senkronizasyon bağlantıları için Ed25519 anahtarları kullanılmaya başlandı.
- QUIC için UDP port eşleştirmesi/pinhole desteği eklendi.
- Performans ve Kaynak Yönetimi:
- Yerel ağdaki bant genişliğini sınırlama seçeneği ayarlara eklendi.
- Android'de yerel keşif ve ağ geçidi tespitiyle ilgili sorunlar giderildi.
- Çakışma Yönetimi: Silinen bir dosyanın artık çakışma çözümlemesini kazanması durumunda, silinen dosya bir çakışma kopyası olarak taşınacaktır.
- Hata Düzeltmeleri:
- Veritabanı güncellemelerinde çok sayıda bloğun işlenmesiyle ilgili hatalar düzeltildi.
- Senkronizasyonun "Sync Waiting" durumunda gereksiz yere yanıp sönmesi sorunu giderildi.
- Android 14+ sürümlerinde yerel ağ geçidi adresi keşfiyle ilgili sorunlar çözüldü.
Platform Desteği Değişiklikleri:
SQLite ile çapraz derleme karmaşıklıkları nedeniyle aşağıdaki platformlar için artık prebuilt ikili dosyalar sunulmayacaktır:
- dragonfly/amd64
- illumos/amd64 ve solaris/amd64
- linux/ppc64
- netbsd/*
- openbsd/386 ve openbsd/arm
- windows/arm
Syncthing 2 Geliyor!
Syncthing'in yeni nesli olan Syncthing 2.x sürümü yakında 1.x serisinin yerini alacak. Syncthing 2, yeni bir veritabanı formatı ve çeşitli temizliklerle birlikte gelirken, Syncthing 1 ile protokol uyumluluğunu sürdürecek.
Syncthing 2 hakkında daha detaylı bilgilere https://github.com/syncthing/syncthing/releases adresindeki sürüm notlarından ulaşabilirsiniz.
Bu sürüm aynı zamanda aşağıdaki şekillerde de mevcut:
- APT deposu: https://apt.syncthing.net/
- Docker imajı: docker.io/syncthing/syncthing:1.30.0 veya ghcr.io/syncthing/syncthing:1.30.0 (Sadece ana sürümü takip etmek için docker.io/syncthing/syncthing:1 veya ghcr.io/syncthing/syncthing:1 kullanabilirsiniz.)
Yapılan Değişiklikler
Düzeltmeler:
Özellikler:
- Protokol: Eş zamanlı bağlantı başlatma ve kapatma durumunda yaşanan kilitlenme (deadlock) sorunu giderildi.
- Syncthing: nil fd'ye (geçersiz dosya tanımlayıcı) panik günlüğü yazmaktan kaçınıldı.
Diğer:
- Yapılandırma: Klasör ve cihaz bilgileri metrik olarak dışa aktarılacak şekilde ayarlandı.
- Derleme: Derleme etiketleri Debian derlemesine doğru şekilde yayıldı.
- Protokol: Bağlantı rutinlerinin ikinci kez başlatılması engellendi.
- Protokol: Şifrelenmiş parola değişikliklerine yalnızca küme yapılandırmasında izin verildi.
Syncthing 2 Geliyor
Syncthing sürüm 1.x yakında Syncthing sürüm 2.x ile değiştirilecektir. Sürüm 2, yeni bir veritabanı formatı ve çeşitli temizlikler getiriyor, ancak Syncthing 1 ile protokol uyumlu kalmaya devam ediyor.
Syncthing 2 hakkında daha detaylı bilgiye https://github.com/syncthing/syncthing/releases adresindeki sürüm notlarından ulaşabilirsiniz.
Neler Değişti
Düzeltmeler:
Özellikler:
- Yapılandırma varsayılanlarının derin kopyalanması düzeltildi.
- Denetim günlüğü seçeneklerinin yeniden başlatma gerektirdiği işaretlendi.
- Oluşturulan klasörlerin izinleri düzeltildi.
- Başlangıçta hem yapılandırma hem de veri dizinlerinin mevcut olduğu sağlandı.
- 'IDs' gibi dizeleri işlemek için uncamel() fonksiyonu güncellendi.
Diğer:
- GUI: Modal sekmeler arasında geçiş yaptıktan sonra ESC tuşuna basıldığında bir modalın kapanması özelliği eklendi.
- GUI: Sırpça (sr) çeviri şablonu eklendi.
- Derleme: golangci-lint yeniden etkinleştirildi.
- İyileştirme: golangci-lint ve meta, ayrı bir sadece PR (Pull Request) iş akışına taşındı.
- Yeniden Düzenleme: Kodu basitleştirmek için slices.Contains kullanıldı.
- Derleme: Otomatik sürüm etiketleri için süreç oluşturuldu.
- Yeniden Düzenleme: Sıralama için slices paketi kullanıldı.
- Dokümantasyon: v2'nin gelişi hakkında genel notlar eklendi.
- Derleme: PR'lar için etiketleyici iş akışı eklendi.
Neler Değişti:
- Kitaplıkta model yöntemleri açılarak ilerleme bilgisi edinme imkânı sağlandı.
- Arayüzde, klasör türüne göre etkinleştirilen veya devre dışı bırakılan seçeneklerin açıklamaları eklendi.
- Arayüzde, aygıt kimliği doğrulaması artık standart biçime göre yapılacak şekilde düzeltildi.
- Yapılandırma bölümünde, artık kullanılmayan birincil STUN sunucusu kaldırıldı.
- STUN ile ilgili hata yönetimi geliştirildi.
- Yapılandırmada, artık kullanılmayan ikincil STUN sunucuları kaldırıldı.
- Dosya sisteminde büyük/küçük harf normalleştirme işlemi hızlandırıldı.
- Bağımlılıklar güncellendi.
- Dosya sistemi ve yapılandırma alanlarında özel dosya sistemi türü oluşturma desteği eklendi.
- Debian sürüm numaralarında alt çizgi yerine tire kullanımı sağlandı.
- Model bölümünde toplam çakışma sayısını gösteren bir metrik eklendi.
- Klasör yapılandırması okunurken varsayılan ayarların düzgün uygulanması sağlandı.
- Dosya sistemi türü belirtilmemişse varsayılan olarak "basic" kabul edilmesi sağlandı.
- Derleme çıktılarının Azure'a gönderilmesi sağlandı.
- Birincil STUN sunucularının SRV kayıtları üzerinden çözümlenmesi sağlandı.
- Dosya sistemi dışarıdan uygulanabilir hâle getirildi.
- "setup" (kurulum) ve "set up" (kurmak) ifadeleri arasında anlam ayrımı yapıldı.
- Arayüzde, bağlantısı kopmuş ve daha önce hiç görülmemiş aygıtlar artık "etkin değil" olarak işaretleniyor.
- Sertifikayı kilitlemek yerine ayrı bir kilit dosyası kullanılarak eşzamanlama işlemleri daha güvenli hâle getirildi.
- API ve arayüzde, metrikler için kimlik doğrulama atlaması seçeneği eklendi.
- Yeni dosyalara eksik telif hakkı bilgileri eklendi.
- Linux’ta iş parçacıklarına aynı I/O önceliği verilmesi sağlandı.
- TLS 1.2 eşzamanlama bağlantıları için destek kaldırıldı.
- Arayüzde kullanılan bağımlılıkların telif bilgileri güncellendi, periyodik bakım için betik eklendi.
- API tarafında "X-Forwarded-For" başlığının kaydı eklendi.
- Yapılandırmaya denetim dosyası (audit file) seçeneği eklendi.
- Arayüzde bağımlılık listesi için go list --deps komutu kullanılmaya başlandı.
- Relay sunucusunda oturum sınırlayıcı, oturuma özel hâle getirildi.