§1İki ömür

Motor yenilenir, çalışmanız kalır

Motorsürüm 1.8f16 eğitimigüvenli toplama v1içerik beyan ederKayıtlı iş akışıf16 eğitimiyüklenir & çalışırDaha yeni bir Packgüvenli toplama v2daha yeni Scellis gerekir
Şek. 1 — Uyumluluk el sıkışması: motor neler yapabildiğini bildirir, içerik neye ihtiyacı olduğunu beyan eder. Eşleşme çalışır; karşılanmayan ihtiyaç reddedilir.

İndirdiğiniz uygulama bilinçli olarak küçüktür — bir motor, başka bir şey değil. Gerçekten kullandığınız her yetenek — Block'lar, çekirdekler, modeller, görüntüleyiciler — katalogdan içerik olarak gelir ve baytlarının hash'iyle adlanır. Çalışmanız hiçbir zaman bizim ikili dosyamızın içinde yaşamaz; dolayısıyla sürüm döngümüz onu rehin alamaz: ikisi, açık bir sözleşmeyle birbirine bağlı ayrı saatlerde ilerler.

Sözleşmenin iki yarısı vardır. Motor bir sürüm numarası ve neler yapabildiğinin listesini taşır — f16 eğitimi, güvenli toplama vb. — ve içerik, sürüm numarasını değil yetenekleri sınar. İçerik ise neye ihtiyaç duyduğunun listesini taşır. Çalışan motor bir beyanı karşılayamıyorsa yükleyici yüksek sesle reddeder: net bir tanı ve katalogda “daha yeni bir Scellis gerekiyor” rozeti — asla çökme, asla sessiz yanlış çalıştırma; çünkü yanlış bir sonuç, reddedilmiş bir sonuçtan çok daha kötü eskir. Motorun neyi çalıştırabildiğini nasıl bildirdiği rehberde anlatılıyor.

§2Geriye dönük uyumluluk

Daha yeni motor, eskisinin çalıştırdığı her şeyi çalıştırır

DeğişiklikSürüm sınıfıMevcut çalışmanız
Yeni bir yetenekekleyiciDokunulmadan çalışır — içeriğiniz yeni değere hiç başvurmamıştı.
Her yeni motor sürümüsürümden önce doğrulanırDondurulmuş altın korpus, bir sürüm var olmadan önce başarıyla yeniden çalışmak zorundadır.
Bir yeteneği kaldırmak, anlamını değiştirmekmajorGöç yolu zorunludur — asla sessiz bir bırakma olmaz.
Bir Block'un ya da op'un yeni sürümübirlikte yaşarSabitlemeler eski sürümü çözümlemeye devam eder — yayımlanmış sürümler değişmezdir.
Motorunuzdan daha yeni içerikyüksek sesle reddedilir“Daha yeni bir Scellis gerekiyor” rozeti — asla yanlış çalıştırma olmaz; ne zaman isterseniz o zaman güncellersiniz.

Bu gereklilik mekaniktir: otomatik denetimler, dondurulmuş korpusu her motor değişikliğine karşı yeniden çalıştırır ve her beyanı dürüst tutar — hiçbir şey dağıtılmadan önce.

Burada geriye dönük uyumluluk bir sürüm notu nezaketi değil, sınanan bir gerekliliktir. Dondurulmuş bir altın korpus — her önceki motordan örnek op'lar, Block'lar ve modeller — mevcut motor tarafından beyan edilmiş toleranslar içinde yeniden çalıştırılır; bir sürüm ancak bundan sonra var olabilir. Bir değişiklik eski bir op'un sayılarını değiştirecek ya da çalışmasını bozacak olsa sürüm engellenir: doğruluk, kanıtlandığı gibi sürümlenir.

Motor ekleyerek büyür, yeniden yazarak değil: yeni bir yetenek, mevcut içeriğinizin hiç başvurmadığı bir değerdir; dolayısıyla o içerik dokunulmadan çalışır. Bir yeteneği emekliye ayırmak ya da mevcut birinin anlamını değiştirmek, göç yolu gerektiren bir majör sürümdür — asla sessiz bir bırakma değildir. Yayımlanmış içerik ise kimliğiyle değişmezdir: bir sürüm bir sözleşmedir, yeni sürümler eskilerin yanında yaşar ve sabitlenmiş her şey her zaman çözümlediği baytların aynısını çözümlemeye devam eder.

§3Güncelleme yolu

Güncellemeler atomiktir, doğrulanır ve sizin şartlarınızla alınır

Yeni kabuk gelirsonraki eşitlemedeBütünlük doğrulanırAtomik değişimYenile ve güncellesiz istediğinizdeağ yok mu?cihazınızmotor 1.8 · önbellektehesaplamayı sürdürür
Şek. 2 — Güncelleme yolu: eşitlemede indirilir, imzalı hash'e karşı doğrulanır, tek adımda değiştirilir, sonraki yüklemede alınır. Çevrimdışında motor çalışmaya devam eder.

Motor güncellemesi, içerikle aynı yoldan gelir. Yeni uygulama kabuğu arka planda indirilir, baytları etkinleştirilmeden önce imzalı bir hash'e karşı doğrulanır, sonra tek adımda değiştirilir — yarım güncellenmiş bir uygulama asla çalışmaz ve yerel veritabanınıza dokunulmaz. Sizin gördüğünüz, sürüm notları taşıyan sakin bir “güncellemek için yeniden yükleyin” sinyalidir: yeni sürüm ve tam olarak neyi değiştirdiği (değişiklik günlüğü) — asla bir gecede altınızda sessizce değişmiş bir uygulama değil.

Yeniden yüklemeyi erteleyin — ya da ağı kaybedin — hiçbir şey gerilemez. Çevrimdışı bir cihaz, önbelleğindeki motorla süresiz hesaplamaya devam eder: yerel öncelikli çalışma kümesi cihazda eksiksizdir; sahadaki bir dizüstü bir yıl aynı motorda kalıp bu süre boyunca çizmeye, çalıştırmaya ve eğitmeye devam edebilir. Burada güncelleme başınıza gelen bir şey değil, sizin aldığınız bir şeydir.

§4Güncellemeler arası durum

Güncelleme, geri dönen sekmeyi asla kilitlemez

CihazınızdaBir güncelleme boyuncaMekanizma
Taslaklar ve eşitlenmemiş düzenlemelerher zaman korunurKalıcı depolama yalnızca büyür; her otomatik onarım onu korur.
Kesinleşmiş çalışmabayt düzeyinde aynıHash ile adreslenir — bir hash'teki baytlar asla değişmez.
Katalog kopyanızsaniyeler içinde yeniden türetilirSaklama biçimi değiştiğinde temizlenir ve olağan eşitlemeyle yeniden kurulur.
Uygulamanın kendisitek adımda değiştirilirEtkinleştirilmeden önce imzalı bir hash'e karşı doğrulanır.
Ayarlar ve profillerkorunurKalıcı durum — yalnızca büyür, asla yıkıcı biçimde değişmez.
Sıkışmış bir sekmetek satırla kurtarmaAdres çubuğundaki belgelenmiş bir sıfırlama, temiz biçimde yeniden yükler — geliştirici araçları gerekmez.

Sürümler umulmaz, kanıtlanır: geri dönen kullanıcı sınaması, taze uygulamayı eski bir veritabanına ve bayat bir önbelleğe karşı yükler ve kendini çalışan bir Studio'ya onarmak zorundadır.

Yerel öncelikli çalışma, “eski durumla geri dönmeyi” istisna değil olağan durum yapar: yeni bir sürüm, öncekinin önbelleklerini ve yerel veritabanını hâlâ tutan bir tarayıcıyla rutin olarak karşılaşır. Bu yüzden cihazınızda saklanan her şeyin biçimi kendi parmak izini taşır. Açılışta, saklanan herhangi bir veriye dokunulmadan önce, değişmiş bir parmak izi yalnızca yeniden türetilebilecek olanı temizler — katalog kopyası, önbellekler, uygulama kabuğu — ve olağan eşitlemeyle saniyeler içinde yeniden kurar. Geçersiz kılınır ve yeniden türetilir; asla yerinde göç ettirilmez, asla yarı tutarlı bırakılmaz.

Yalnızca cihazınızın tuttuğu şeyler — taslaklar, eşitlenmeyi bekleyen düzenlemeler, ayarlarınız — her otomatik onarımda korunur. Onları yalnızca siz silebilirsiniz: adres çubuğuna yazılan, belgelenmiş tek bir sıfırlama ile. Aynı tek satır, sıkışmış her sekmenin kurtarma yoludur ve geliştirici araçları gerektirmez. Hatalı davranan bir arka plan işçisi bile tasarım gereği kurtarılabilir; dolayısıyla kötü bir güncelleme asla kalıcı bir tıkanıklığa dönüşemez.

§5Yıllar boyu yeniden üretilebilir

Bir çalıştırma, kendisini üreten motoru hatırlar

Sürümler arası yeniden üretilebilirlik hatırlanmaz, kaydedilir. Her çalıştırma, kullandığı her şeyi hash ile *ve* onu çalıştıran motor sürümünü, beyan edilmiş bir katılıkla birlikte sabitler — bir sonucu yeniden üretmek, yıllar sonra bile neyin, neyin üzerinde ve ne kadar sıkı çalıştığının makine tarafından okunabilir bir beyanıyla başlar. Atıf verilen, kesinleşmiş çalışma, bağlantı var oldukça aynı baytlara çözümlenir ve bir yeniden üretim, kayıtlı sözleşmeyi karşılayan her motorda tekrar oynatılır.

Güvencenin bir kenarı olduğunda kayıt bunu yuvarlamak yerine söyler: GPU kayan noktaları, çalıştırmanın beyan ettiği tolerans içinde yeniden çalışır; cihazlar arası bit eşitliği CPU referans yolundan gider — bu sınırları dürüst sınırlar sayfasında basıyoruz. Sonuç, yıllar içinde dürüst kalan bir yeniden üretimdir: iddia, folklora dönüşmek yerine çalıştırmayla birlikte kalibre edilmiş olarak yolculuk eder. Uygulama pratiği yeniden üretilebilirlik rehberindedir.

§6Yol haritamızın ötesi

Bize güvenmeyi gerektirmeyen kalıcılık

Bir kalıcılık vaadi, tam da ona en çok ihtiyaç duyduğunuz anda en zayıftır — bu yüzden çıkışlar baştan inşa edilmiştir. Yaptığınız her şey taşınabilir, belgelenmiş .scellis-* dosyaları olarak dışa aktarılır — iş akışları, Pack'ler, modeller, veri kümeleri — baytı baytına yeniden üretilebilir ve içe aktarımda kendi hash'ini doğrular; ayrıca cihazınızdaki her şeyin cihazda tutulan bir yedeği (kimlik bilgileri yapısal olarak hariç: cihazdan hiç çıkmazlar). Yazdığınız sizindir ve ne zaman isterseniz sizinle gider.

Biçimler bizim iyi niyetimize muhtaç değildir: şemalar, dışa aktarım dosyaları, uygunluk korpusu ve CPU referansı izin verici lisansla yayımlanır — değişim halkası — böylece herkes çalışmanızı bize sormadan okuyabilir, doğrulayabilir ve üzerine geliştirebilir. Motorun kendisi fair-code koşullarıyla kaynak olarak yayımlanır ve her sürüm zamanla izin verici lisansa dönüşür. Biz on yıllarca sürüm planlıyoruz; mimarinin amacı, çalışmanızın buna bahse girmek zorunda olmamasıdır.