§ Platform / Kalıcılık
Çalışmanız, bizim sürümlerimizden daha uzun yaşar.
Scellis, dağıtılanı kalıcı olandan ayırır: uygulamanın kendisi küçük, sürümlü bir motordur — sizin ürettiğiniz her şey ise tam olarak neye ihtiyaç duyduğunu beyan eden değişmez içeriktir. Motorun çalıştıramayacağı içerik, yanlış çalıştırılmak yerine yüksek sesle reddedilir; daha yeni bir motor eskisinin çalıştırdığı her şeyi çalıştırmak zorundadır ve çevrimdışı bir cihaz önbelleğindeki motorla süresiz hesaplamaya devam eder.
Motor yenilenir, çalışmanız kalır
İ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.
Daha yeni motor, eskisinin çalıştırdığı her şeyi çalıştırır
| Değişiklik | Sürüm sınıfı | Mevcut çalışmanız |
|---|---|---|
| Yeni bir yetenek | ekleyici | Dokunulmadan çalışır — içeriğiniz yeni değere hiç başvurmamıştı. |
| Her yeni motor sürümü | sürümden önce doğrulanır | Dondurulmuş 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ştirmek | major | Göç yolu zorunludur — asla sessiz bir bırakma olmaz. |
| Bir Block'un ya da op'un yeni sürümü | birlikte yaşar | Sabitlemeler eski sürümü çözümlemeye devam eder — yayımlanmış sürümler değişmezdir. |
| Motorunuzdan daha yeni içerik | yü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.
Güncellemeler atomiktir, doğrulanır ve sizin şartlarınızla alınır
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.
Güncelleme, geri dönen sekmeyi asla kilitlemez
| Cihazınızda | Bir güncelleme boyunca | Mekanizma |
|---|---|---|
| Taslaklar ve eşitlenmemiş düzenlemeler | her zaman korunur | Kalıcı depolama yalnızca büyür; her otomatik onarım onu korur. |
| Kesinleşmiş çalışma | bayt düzeyinde aynı | Hash ile adreslenir — bir hash'teki baytlar asla değişmez. |
| Katalog kopyanız | saniyeler içinde yeniden türetilir | Saklama biçimi değiştiğinde temizlenir ve olağan eşitlemeyle yeniden kurulur. |
| Uygulamanın kendisi | tek adımda değiştirilir | Etkinleştirilmeden önce imzalı bir hash'e karşı doğrulanır. |
| Ayarlar ve profiller | korunur | Kalıcı durum — yalnızca büyür, asla yıkıcı biçimde değişmez. |
| Sıkışmış bir sekme | tek satırla kurtarma | Adres ç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.
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.
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.