Veritabanı Değişiklikleri ve Düzeltmeleri
  • Yeni Veritabanı: Veritabanı, LevelDB'den SQLite'a geçirildi. Bu geçiş, veritabanını daha anlaşılır, bakımı kolay ve daha az hatalı hale getirmeyi hedefliyor.
  • Geçiş Süreci: İlk başlatma sırasında, özellikle büyük kurulumlar için uzun sürebilecek bir veri geçişi yaşanacak.
  • SQLite İyileştirmeleri: SQLite uygulaması için _txlock=immediate ayarı eklendi. Ayrıca, veritabanındaki dosya adları ve sürümler için normalleştirilmiş tablolar kullanılıyor.

Performans ve Kullanılabilirlik İyileştirmeleri
  • Günlükleme (Logging): Günlük formatı, mesaj ve anahtar-değer çiftlerinden oluşan yapılandırılmış girdilere dönüştürüldü. Artık paket başına günlük seviyesi kontrol edilebiliyor ve --log-level komut satırı bayrağı ile varsayılan günlük seviyesi ayarlanabiliyor.
  • Silinen Öğeler: Veritabanında silinen öğeler artık sonsuza kadar saklanmıyor; 15 ay sonra siliniyorlar.
  • Komut Satırı: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski, tek çizgi ile başlayan uzun seçenekler (-home), artık --home gibi iki çizgi ile kullanılmalı.
  • Senkronizasyon Performansı: Kaydırılan verinin algılanmasında kullanılan rolling hash özelliği kaldırıldı. Bu, tarama ve senkronizasyon işlemlerini daha hızlı ve verimli hale getirdi.
  • Varsayılan Klasör: Uygulama ilk başlatıldığında artık otomatik olarak bir "varsayılan klasör" oluşturulmuyor.
  • Bağlantı Sayısı: v2 cihazlar arasında varsayılan olarak üç bağlantı kullanılıyor: biri dizin meta verileri, ikisi veri alışverişi için.

Diğer Önemli Değişiklikler
  • Platform Desteği: SQLite ile derleme karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için önceden derlenmiş ikili dosyalar artık sunulmuyor.
  • Çakışma Çözümü: Bir silme işlemi, çakışma çözümünde galip gelebilir ve bu durumda silinen dosya, çakışma kopyası olarak saklanıyor.
Veritabanı Değişiklikleri ve Düzeltmeleri:
  • Veritabanı Altyapısı Değişikliği: Veritabanı, LevelDB'den SQLite'a geçirildi. Bu geçiş, daha anlaşılır ve bakımı kolay bir altyapı sunar, ancak ilk başlatmada büyük kurulumlar için uzun sürebilir.
  • Hata Düzeltmeleri: Yeni SQLite altyapısıyla ilgili çeşitli sorunlar giderildi. Periyodik çöp toplama (periodic garbage collection) işlemi artık daha az performans etkisine sahip ve geçici dizin konumu açıkça belirlendi.

Performans ve Kullanılabilirlik İyileştirmeleri:
  • Hata Ayıklama ve Günlükleme: Günlük formatı, daha kolay okunabilen yapılandırılmış girdilere dönüştürüldü. Ayrıca, paket başına günlük seviyesini kontrol etme özelliği eklendi ve yeni bir UYARI seviyesi tanımlandı.
  • Silinen Öğeler: Veritabanında silinen öğeler artık sonsuza kadar saklanmıyor; 15 ay sonra otomatik olarak siliniyorlar.
  • Senkronizasyon Performansı: Kaydırılan verinin algılanmasında kullanılan rolling hash özelliği kaldırıldı, bu da tarama ve senkronizasyon işlemlerini daha hızlı hale getirdi.
  • Bağlantı Ayarları: Artık v2 cihazlar arasında varsayılan olarak üç bağlantı kullanılıyor.
  • Komut Satırı: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski -home gibi tek çizgi ile başlayan uzun seçenekler artık desteklenmiyor ve --home olarak değiştirilmeleri gerekiyor.

Diğer Önemli Değişiklikler:
  • Varsayılan Klasör Yok: Uygulama ilk başlatıldığında otomatik olarak bir "varsayılan klasör" oluşturulmuyor.
  • Platform Desteği: SQLite ile derleme karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için önceden derlenmiş ikili dosyalar artık sunulmuyor.
  • Çakışma Çözümü: Silinmiş dosyaların çakışma çözümünde galip gelebilmesi sağlandı. Bu durumda silinen dosya, bir çakışma kopyası olarak saklanıyor.
Düzeltmeler:
  • model: Boş alan kontrolü daha erken yapıldı (düzelti #10347) – @calmh (#10348)
  • api: Destek paketi yapılandırmasında cihaz şifreleme parolaları gizlendi – @pixelspark (#10359)
  • sqlite: Varsayılan sayfa önbellek boyutuna geri dönüldü – @calmh (#10362)
  • tlsutil: GUI/API bağlantılarında HTTP/2 desteği eklendi – @calmh (#10366)
  • sqlite: kv tablosunda rowid kullanılmasından kaçınıldı – @calmh (#10367)
Diğer:
  • model: Klasör durumu günlüğü ayarlandı (düzelti #10350) – @calmh (#10353)
  • build: vmactions/omnios-vm kullanılarak illumos için paketleme – @trisk (#10328)
  • slogutil: Yapılandırılabilir günlük formatı eklendi (düzelti #10352) – @calmh (#1035)
Öne Çıkan Ana Değişiklikler:
  • Veritabanı Altyapısı Değişikliği: Uygulamanın veritabanı, LevelDB'den SQLite'a geçirildi. İlk çalıştırmada, mevcut kurulumların bu yeni veritabanına taşınması işlemi biraz zaman alabilir. Bu yeni veritabanının daha anlaşılır, bakımı daha kolay ve daha az hatalı olması bekleniyor.
  • Günlükleme (Logging) ve Hata Yönetimi:
    • Günlük formatı, daha anlaşılır olan yapılandırılmış girdilere (mesaj ve anahtar-değer çiftleri) dönüştürüldü.
    • Her bir paket için ayrı günlük seviyesi kontrolü eklendi.
    • Yeni bir UYARI günlük seviyesi, BİLGİ ile HATA arasına yerleştirildi.
    • Syncthing'in senkronizasyon eylemlerini gösteren BİLGİ seviyesi artık daha ayrıntılı.
    • STTRACE ortam değişkeni ve grafik arayüzü, paket başına günlük seviyesi belirlemek için güncellendi.
  • Silinen Dosyaların Saklanma Süresi: Silinen öğeler artık veritabanında sonsuza kadar tutulmuyor. Varsayılan olarak 15 ay sonra silinmeleri sağlanıyor. İsteğe bağlı olarak bu süreyi db-delete-retention-interval komutu ile değiştirebilirsiniz.
  • Komut Satırı Seçenekleri: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski tek çizgili uzun seçenekler (örn. -home) artık desteklenmiyor. Bunun yerine, –home şeklinde çift çizgi kullanılması gerekiyor.
  • Performans İyileştirmesi:
    • Kaydırılan verinin algılanmasında kullanılan dönen karma (rolling hash) tespiti desteği kaldırıldı. Bu sayede tarama ve senkronizasyon işlemleri daha hızlı ve verimli hale geldi.
    • v2 cihazlar arasında varsayılan olarak birden fazla bağlantı kullanılıyor.
  • Taşınan Dosya Çakışma Yönetimi: Bir çakışma durumunda dosyanın silinmesi, artık galip gelen sonuç olabiliyor. Bu durumda silinen dosya, bir çakışma kopyasına taşınıyor.

Dağıtım ve Düzeltmeler:
  • Önceden Derlenmiş İkililer: SQLite ile çapraz derleme (cross-compilation) karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için syncthing.net ve GitHub'dan önceden derlenmiş ikili dosyalar artık sunulmuyor.
Öne Çıkan Ana Değişiklikler:
  • Veritabanı Altyapısı Değişikliği: Uygulamanın veritabanı, LevelDB'den SQLite'a geçirildi. İlk çalıştırmada, mevcut kurulumların bu yeni veritabanına taşınması işlemi biraz zaman alabilir. Bu yeni veritabanının daha anlaşılır, bakımı daha kolay ve daha az hatalı olması bekleniyor.
  • Günlükleme (Logging) ve Hata Yönetimi:
    • Günlük formatı, daha anlaşılır olan yapılandırılmış girdilere (mesaj ve anahtar-değer çiftleri) dönüştürüldü.
    • Her bir paket için ayrı günlük seviyesi kontrolü eklendi.
    • Yeni bir UYARI günlük seviyesi, BİLGİ ile HATA arasına yerleştirildi.
    • Syncthing'in senkronizasyon eylemlerini gösteren BİLGİ seviyesi artık daha ayrıntılı.
    • STTRACE ortam değişkeni ve grafik arayüzü, paket başına günlük seviyesi belirlemek için güncellendi.
  • Silinen Dosyaların Saklanma Süresi: Silinen öğeler artık veritabanında sonsuza kadar tutulmuyor. Varsayılan olarak 15 ay sonra silinmeleri sağlanıyor. İsteğe bağlı olarak bu süreyi db-delete-retention-interval komutu ile değiştirebilirsiniz.
  • Komut Satırı Seçenekleri: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski tek çizgili uzun seçenekler (örn. -home) artık desteklenmiyor. Bunun yerine, –home şeklinde çift çizgi kullanılması gerekiyor.
  • Performans İyileştirmesi:
    • Kaydırılan verinin algılanmasında kullanılan dönen karma (rolling hash) tespiti desteği kaldırıldı. Bu sayede tarama ve senkronizasyon işlemleri daha hızlı ve verimli hale geldi.
    • v2 cihazlar arasında varsayılan olarak birden fazla bağlantı kullanılıyor.
  • Taşınan Dosya Çakışma Yönetimi: Bir çakışma durumunda dosyanın silinmesi, artık galip gelen sonuç olabiliyor. Bu durumda silinen dosya, bir çakışma kopyasına taşınıyor.

Dağıtım ve Düzeltmeler:
  • Önceden Derlenmiş İkililer: SQLite ile çapraz derleme (cross-compilation) karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için syncthing.net ve GitHub'dan önceden derlenmiş ikili dosyalar artık sunulmuyor.
  • Hata Düzeltmeleri: Veritabanının sadece taşıma betiği çalıştırıldığında temizlenmesini (vacuum) sağlayarak ilgili bir hata düzeltildi.
  • Belgeleme: Katkı yönergelerine DCO (Developer Certificate of Origin) gereksinimi eklendi.
Düzeltmeler:

fix(cmd): Uyumluluk için --version bayrağı geri getirildi (@acolomb, #10269)

fix(cmd): Veritabanı geçişi yazma hatalarına karşı daha dayanıklı hale getirildi (@calmh, #10278)

fix(cmd): Veritabanı geçişi sırasında geçici GUI/API sunucusu sağlandı (@calmh, #10279)

fix(db): Başlangıçta silinen klasörlere ait dosyalar temizlendi (@calmh, #10280)

Diğer:

chore(slog): LOGGER_DISCARD yeniden etkinleştirildi (fixes #10262) (@rasa, #10267)

build: gopsutil sürümü düşürüldü (fixes #10276) (@calmh, #10277)
Düzeltmeler:
  • fix: Yapılandırma dizini olmadan yükseltmeye izin verildi (düzeltme: #10240) – @calmh tarafından (#10241)
  • fix(all): Çeşitli yazım hataları düzeltildi – @rasa tarafından (#10242)
  • fix(etc): Linux masaüstü dosyasında tarayıcı başlatma komutu (incantation) düzeltildi – @calmh tarafından (#10246)
  • fix(db): URL özel karakterleri içeren yol adları işlendi (düzeltme: #10245) – @calmh tarafından (#10247)
  • fix: Varsayılan silme saklama süresi 15 aya çıkarıldı – @calmh tarafından (#10252)
Diğer:

build(deps): (çoğu) bağımlılık güncellendi – @calmh tarafından (#10243)
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:
  • 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ı.
Özellikler:
  • Yapılandırma: Klasör ve cihaz bilgileri metrik olarak dışa aktarılacak şekilde ayarlandı.
Diğer:
  • 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.