Yeni Özellikler​

  • Yeni nursery kuralı noConsoleSpaces eklendi: console.log(), console.debug(), console.info(), console.warn() veya console.error() çağrılarında, başka bir argümanın yanında yer alan argümanın başındaki veya sonundaki boşluğu bildirir. Bu metotlar argümanlar arasına zaten boşluk koyduğu için bu boşluk iki kez yazdırılır.
  • Yeni nursery kuralı noMagicArrayFlatDepth eklendi: Array.prototype.flat() derinliği olarak 1 dışındaki sayı literallerinin, parantez içinde bunları açıklayan bir yorum yoksa bildirilmesini sağlar.
  • Yeni nursery kuralı noNull eklendi: null literal kullanımlarını bildirir ve bunun yerine undefined önerir. foo === null gibi katı karşılaştırmalara izin verilir.
  • Yeni nursery kuralı noReturnArrayPush eklendi: push() veya unshift() dönüş değerini kullanan kodu bildirir. Bu metotlar eklenen öğeyi veya diziyi değil, dizinin yeni uzunluğunu döndürür.
  • Yeni nursery kuralı noUnreadableIife eklendi: Tanımlandığı yerde çağrılan ve gövdesi parantez içine alınmış arrow fonksiyonlarını bildirir.
  • Yeni nursery kuralı noUselessRecursion eklendi: Aynı işi bir döngü yapabilecekken kendini çağırarak dönen fonksiyonları bildirir. Çok fazla iç içe çağrı, yığın taşması (stack overflow) hatasıyla programı çökertebilir.
  • Yeni nursery kuralı noVueComputedPropertiesInData eklendi: Bir Vue bileşeninin data fonksiyonu içinde kullanılan computed özelliklerini bildirir. Vue, computed özelliklerini kurmadan önce data'yı çalıştırdığı için orada okunan değer undefined olur.
  • Yeni nursery kuralı noVueDeprecatedDeleteSet eklendi: $set ve $delete fonksiyonlarına, Vue.set ve Vue.delete çağrılarına ve vue'dan içe aktarılan set ve del çağrılarına işaret eder. Vue 3 bu fonksiyonları kaldırdığı için çağrılması hata fırlatır.
  • Yeni nursery kuralı noVueDeprecatedRouterLinkTagProp eklendi: RouterLink üzerindeki tag prop'unu yasaklar. Vue Router 4 bu prop'u yok saydığı için bağlantı yine <a> öğesi olarak işlenir.
  • Yeni nursery kuralı noVueDeprecatedScopeAttribute eklendi: Vue dosyalarında <template> öğeleri üzerindeki scope özniteliğini bildirir. Vue bu öznitelği artık desteklemediği için slot prop'larını almak amacıyla v-slot kullanılmalıdır.
  • Yeni nursery kuralı noVueMultipleSlotArgs eklendi: Bir render fonksiyonundan Vue slot'una birden fazla argüman geçirilmesini yasaklar. Şablonda yazılan slot içeriği yalnızca ilk argümanı alır.
  • Yeni nursery kuralı noVueMutatingProps eklendi: Bir Vue bileşeninin prop'larını script'te veya şablonda değiştiren kodu bildirir. Prop'lar üst bileşene aittir; bu nedenle alt bileşen bir olay yayınlamalı veya değeri kopyalamalıdır.
  • Yeni nursery kuralı noVueSideEffectsInComputed eklendi: Durumu değiştiren Vue computed özelliklerini bildirir. Bir computed özelliğinin ne zaman çalışacağına Vue karar verdiği için, içinde yapılan değişiklikler öngörülemeyen zamanlarda gerçekleşir.
  • Yeni nursery kuralı noVueUnusedRefs eklendi: Vue bileşenlerinde $refs, useTemplateRef() veya <script setup> içinde aynı adlı bir değişken aracılığıyla hiçbir şey tarafından okunmayan şablon ref'lerini bildirir. Kural, html.experimentalFullSupportEnabled ayarının true olmasını gerektirir.
  • Yeni nursery kuralı noYamlBooleanKeys eklendi: YAML'da anahtar olarak boolean değerlere izin vermez. Örneğin true anahtarı metin yerine boolean olduğu için bildirilir.
  • Yeni nursery kuralı useSvelteEventDispatcherTypes eklendi: TypeScript ile yazılmış Svelte bileşenlerinde olaylarının türlerini bildirmeyen createEventDispatcher() çağrılarını bildirir.
  • Yeni nursery kuralı useVueDefineOptions eklendi: <script setup> da kullanan Vue bileşenlerinde düz <script> bloğunun default export'unu bildirir ve bu seçeneklerin defineOptions() ile ayarlanmasını önerir.
  • Yeni nursery kuralı useVueDefinePropsDestructuring eklendi: Vue <script setup> bloklarında defineProps() tarafından döndürülen prop'ların destructure edilmesini gerektirir. Destructure edilmiş prop'lar varsayılan değerlerini doğrudan ayarlayabildiği için withDefaults() de bildirilir.
  • Yeni nursery kuralı useVueTemplateRef eklendi: <script setup> içinde şablon öğelerine erişmek için ref() veya shallowRef() yerine useTemplateRef() kullanılmasını gerektirir.
  • Yeni nursery kuralı useVueTypedProps eklendi: props seçeneğinde, defineProps() içinde veya defineModel() içinde türsüz tanımlanan Vue prop'larını bildirir. Tür olmadan Vue prop için her değeri kabul eder ve bileşen yanlış türde bir değer aldığında uyarı veremez.
  • Yeni nursery kuralı useVueVModel eklendi: Bir Vue bileşeni üzerindeki prop bağlamasının, yalnızca yeni değeri geri yazan bir update: dinleyicisiyle eşleştirilmesini bildirir ve bunun yerine v-model önerir.
  • Yeni nursery kuralı useVueValidDefineEmits eklendi: <script setup> içinde Vue'nun defineEmits makrosunun geçerli kullanımını zorunlu kılar.
  • Yeni nursery kuralı useVueValidDefineProps eklendi: Vue'nun derleyemediği veya prop'ları yanlış tanımlayan defineProps() çağrılarını bildirir. Örneğin defineProps() çağrısını iki kez yapan veya argümanı <script setup> içinde tanımlanan bir değişken kullanan bileşenleri bildirir.
  • Yeni nursery kuralı useVueValidVIs eklendi: Argümanı veya değiştiricisi olan, değeri bulunmayan ya da yerel bir HTML öğesi yerine bileşen üzerinde kullanılan v-is yönergelerini bildirir.
  • Yeni nursery kuralı useVueValidVMemo eklendi: Vue şablonlarındaki geçersiz v-memo yönergelerini bildirir. v-memo yönergesinin değeri dizi olmalıdır, argüman veya değiştirici alamaz ve v-for içeren bir öğenin içinde çalışmaz.
  • Yeni nursery kuralı useVueValidVModel eklendi: Vue'nun kullanamadığı v-model yönergelerini bildirir: desteklenmeyen öğelerde veya dosya girdilerinde, yerel öğede argüman ya da bilinmeyen değiştiriciyle, değersiz veya atanamayan bir değerle kullanılanlar.
  • Yeni nursery kuralı useVueValidVShow eklendi: Argümanı, değiştiricisi veya değeri olmayan ya da <template> öğesi üzerine yerleştirilen v-show yönergelerini bildirir.
  • Yeni nursery kuralı useVueValidVSlot eklendi: Vue şablonlarındaki yanlış yerleştirilmiş, yinelenen veya hatalı biçimlendirilmiş v-slot yönergelerini bildirir.
  • Yeni nursery kuralı useVueVModel dışında useWhileLoopCondition eklendi: Yalnızca break içeren bir if ifadesiyle başlayan while (true) ve for (;;) gibi döngüleri bildirir ve bu koşulu while ifadesine taşır.
  • Yeni nursery kuralı noVueDeprecatedListeners eklendi: Vue 3'ün kaldırdığı $listeners başvurularını Vue şablonlarında ve bileşen nesnelerinde bildirir. Örneğin Biome artık <div v-on="$listeners" /> ve bir Vue bileşeni içindeki this.$listeners ifadesini bildiriyor.

İyileştirmeler​

  • useSortedProperties, stylelint-config-recess-order 7.9.0 sürümünü izleyecek şekilde güncellendi; scroll-behavior, anchor positioning, çok sütunlu düzen ve Biome'un bildiği diğer özellikler için sıralama desteği eklendi.
  • Linter performansı iyileştirildi. Biome, analiz ettiği her dosya için etkin kuralları kurmaya artık daha az zaman harcıyor.
  • biome lint performansı büyük projelerde yaklaşık %1 ila %3 oranında iyileştirildi; en belirgin etki Biome'un varsayılan kurallarında ve değişkenleri veya erişilemeyen kodu izleyen kurallarda görülüyor.
  • Kuralların kod düzeltmeleriyle tanılama raporladığı dosyalarda biome lint, biome check ve biome ci performansı varsayılan kurallarla %12'ye kadar iyileştirildi.
  • Biome çok sayıda dosyayı işlerken performansı %7'ye kadar iyileştirildi.
  • noVueVIfWithVFor kuralı artık v-for ile aynı öğedeki v-else-if ve v-else yönergelerini de bildiriyor.

Hata Düzeltmeleri​

  • Biome daemon'unun her biome check --use-server çalıştırmasıyla daha fazla bellek kullanması düzeltildi. Daemon artık her dosya ve proje için sakladığı veriyi yeniden kullanıyor ve sözdizimi ağaçlarını yalnızca en son okuduğu dosyalar için tutuyor.
  • Editörde açık bir dosya diskte değiştiğinde dil sunucusunun editördeki metni diskteki metinle değiştirmesi düzeltildi. Biome artık açık dosyaların editördeki metnini, dosyalar kapatılana kadar koruyor; böylece tanılamalar, kod eylemleri ve biçimlendirme doğru konumlarda kalıyor.
  • Dışa aktaran modülün bir adı hem tür hem değer olarak dışa aktardığı durumda, içe aktarılan ad artık tür açıklamalarında türe çözümleniyor; böylece noBaseToString artık slug'ı nesne olarak bildirmiyor.
  • Yapılandırma dosyası ayrıştırılamadığında dil sunucusu artık uyarı gösteriyor. Daha önce Biome, kullanıcıya nedenini söylemeden dosyaları işlemeyi bırakıyordu.
  • Markdown biçimlendiricisi artık bir blockquote ile onu izleyen liste arasındaki boş satırı kaldırmıyor; Prettier ile uyumlu.
  • Markdown biçimlendiricisi artık bir tablo ile onu izleyen liste arasındaki boş satırı kaldırmıyor; Prettier ile uyumlu.
  • İşaretleyicileri 4 veya daha fazla boşluk girintili Markdown liste öğeleri artık doğru seviyede iç içe geçiyor. Daha önce biçimlendirici böyle bir öğeyi öncekinin altına taşıyabiliyor veya o öğenin metnine birleştirebiliyordu.
  • Derin girintili liste öğelerinin içindeki Markdown blok alıntılarının biçimlendirmesi düzeltildi. proseWrap: "always" ile ardışık alıntı satırları artık aynı alıntı içinde birlikte sarılıyor; setext başlıkları ve çitli kod blokları ise yapılarını koruyor.
  • Markdown biçimlendiricisinin tabloları biçimlendirirken idempotent olmaması düzeltildi.
  • linux-x64-musl ikili dosyasının, zaten içinde bulunan jemalloc'u kullanmaması düzeltildi: musl'un ayırıcısına geri dönüyordu ve birden fazla thread ile biome check, örneğin Alpine tabanlı CI imajlarında saniyeler yerine dakikalar sürebiliyordu.
  • markdown.parser.frontmatter ve markdown.formatter.formatEmbeds etkinken, Markdown biçimlendiricisi çitli Markdown kod bloğunun frontmatter'ını yazıldığı gibi koruyor. Daha önce frontmatter'ı bir tematik ayraç ve paragraf olarak biçimlendirip YAML girintisini kaldırıyordu.
  • Biome artık Prettier seçeneği bracketSpacing değerini hem üst düzeyde hem de overrides içinde formatter.bracketSpacing olarak taşıyor. JSON ve GraphQL dosyaları artık JavaScript dosyalarıyla aynı parantez boşluğuyla biçimlendiriliyor.
  • useSortedProperties, çakışan bildirimlerin, fiziksel/mantıksal border veya köşe özelliklerinin ya da all ile devam eden bildirimlerin etkin değerlerini değiştirecek sıralama düzeltmelerini uygulamayacak şekilde düzeltildi.
  • noShorthandPropertyOverrides, mantıksal border, corner shape, position-try, text-box ve transition-behavior geçersiz kılmalarını tanıyacak şekilde güncellendi.
  • Biome'un pnpm-lock.yaml dosyalarını işlemesi düzeltildi. Bu üretilmiş kilit dosyaları artık işlemeye karşı korunuyor.
  • CLI, aynı daemon'a bağlı bir editörle birlikte --use-server ile çalıştığında, diskteki dosyalar yerine editörde açık dosyaların kaydedilmemiş metnini denetlemesi ve editörün metninin kaybolmasına yol açabilmesi düzeltildi. CLI artık diskteki dosyaları denetliyor ve daemon'a bağlı her editör ve CLI çalıştırması, açtığı dosyaların kendi metnini tutuyor.
  • Vue v-for bağlamalarındaki varsayılan değerlerin ayrıştırılması düzeltildi. Biome artık varsayılan değeri JavaScript olarak ayrıştırıyor; böylece ayrıştırma hatası olarak bildirilmek yerine diğer şablon ifadeleri gibi biçimlendiriliyor ve lint ediliyor.
  • Zed, VS Code ve Cursor'ın genel ayar dizinlerindeki JSON olmayan dosyaların JSON olarak ayrıştırılması düzeltildi.
  • Yapılandırma değiştikten sonra dil sunucusunun açık dosyalar için önceki ayrıştırıcı seçeneklerini kullanmaya devam etmesi düzeltildi. Açık dosyalar artık yeni seçeneklerle (örneğin json.parser.allowComments) yeniden ayrıştırılıyor.

Yeni Özellikler​

  • biome init komutuna --git bayrağı eklendi. Bayrak, komut bir Git deposunun dışında çalışsa bile Git VCS entegrasyonunu etkinleştiriyor ve oluşturulan yapılandırmada vcs.useIgnoreFile değerini true yapıyor.
  • biome migrate stylelint komutu eklendi. Stylelint yapılandırmasını ve yok sayma ayarlarını, Stylelint kurallarını Biome karşılıklarına eşleyerek Biome yapılandırmasına aktarıyor. Değişiklikleri uygulamak için --write, ek kuralları taşımak için --include-inspired veya --include-nursery kullanılabiliyor.
  • Yeni assist eylemi useGraphqlSortedDefinitions eklendi; bir GraphQL belgesinin tür, tür uzantısı, direktif, fragment ve operasyon gibi adlandırılmış tanımlarını sıralıyor.
  • biome rage artık çözümlenmiş files.includes ve files.ignoreUnknown yapılandırmasını gösteriyor.
  • useTailwindSortedClasses kuralı için HTML benzeri dosyalarda destek eklendi.
  • Nesne sözdizimli eklenti girdileri için yeni bir resolutionKind seçeneği eklendi. Monorepo'lardaki paylaşılan Biome yapılandırmalarının, eklenti yollarını tüketen projeden çözümlemek yerine yerel Grit eklentilerini bunları tanımlayan paketten yüklemesine olanak tanıyor. resolutionKind: "config" eklentiyi onu tanımlayan yapılandırma dosyasından, resolutionKind: "project" ise tüketen projeden çözümlüyor; belirtilmezse varsayılan project. Bu yalnızca eklenti çözümlemesini etkiliyor; includes son kullanıcı proje dosyaları için her zamanki gibi uygulanıyor.
  • Çözümlenmiş yapılandırma değerlerini ve kaynaklarını, eşleşen geçersiz kılmalar (override) dahil, insan tarafından okunabilir tanılar olarak gösteren biome inspect config eklendi. Yapılandırma dosyaları artık on seviyeye kadar diğer yapılandırmaları genişletebiliyor. Aynı çözümlenmiş dosyaya yapılan tekrarlı başvurular bilgi tanısıyla yok sayılıyor; aynı genişletilmiş paketin birden fazla sürümünün çözümlenmesi ise hata üretiyor.
  • Bir Git deposu içinde (iç içe dizinler ve Git worktree'leri dahil) biome init çalıştırıldığında otomatik Git VCS entegrasyonu eklendi. Oluşturulan yapılandırma vcs.enabled ve vcs.useIgnoreFile değerlerini true, vcs.clientKind değerini "git" olarak ayarlıyor.
  • YAML artık destekleniyor: .yaml ve .yml uzantılı YAML dosyalarını biçimlendirme desteği eklendi.
  • Yapılandırma dosyaları artık yerel dosyaları ve npm paket yapılandırmalarını on seviyeye kadar özyinelemeli olarak genişletebiliyor. Her tekrarlı başvuru birleştirmeye katılıyor; aynı genişletilmiş paketin birden fazla sürümünün çözümlenmesi hata üretiyor.
  • Grit range() desenleri için destek eklendi. Eklentiler sözdizimi düğümlerini isteğe bağlı start_line, start_column, end_line ve end_column sınırlarına göre filtreleyebiliyor.
  • lint ve check komutlarına yeni --profile-type-inference CLI seçeneği eklendi. Profiler, dahili sorguların ve işlemlerin yürütme süresini izliyor, dosyaya göre gruplayıp en pahalıdan en ucuza sıralıyor. Her dosyadaki ilk kaynak kayıtları için ayrıntılı zamanlama, atıf, genişlik ve uygulama referansları eklemek için --verbose kullanılabiliyor.
  • 59 nursery kuralı kararlı gruplara yükseltildi.
  • Correctness grubuna hata (error) önem düzeyiyle yükseltilen kurallar (hepsi önerilen): noDuplicateFieldDefinitionNames, noVueRefAsOperand, noVueImportCompilerMacros, noVueVOnNumberValues, useVueValidVFor, noComponentHookFactories, noJsxNamespace, useReactAsyncServerFunction, noReactNativeRawText, useReactNativePlatformComponents, useQwikLoaderLocation, noPlaywrightMissingAwait, usePlaywrightValidDescribeCallback.
  • Suspicious grubuna yükseltilen kurallar: noLoopFunc, noJsxLeakedDollar, noReactStringRefs (önerilen), useScopedStyles (önerilen), noReactNativeDeepImports (önerilen, hata önem düzeyi), noDrizzleDeleteWithoutWhere (önerilen, hata önem düzeyi), noDrizzleUpdateWithoutWhere (önerilen, hata önem düzeyi), noConditionalExpect, useExpect, noIdenticalTestTitle (önerilen), noPlaywrightForceOption, noPlaywrightNetworkidle, noPlaywrightPagePause, noPlaywrightWaitForNavigation, noPlaywrightWaitForTimeout, noDuplicateSelectors, noEmptyObjectKeys, useBaseline, noUntrustedLicenses.
  • useIframeSandbox kuralı Security grubuna hata önem düzeyiyle yükseltildi.
  • Önerilen useDomNodeTextContent kuralı Performance grubuna uyarı önem düzeyiyle yükseltildi.
  • Complexity grubuna yükseltilen kurallar: useArraySome, useRegexpTest, noUnnecessaryTemplateExpression, noPlaywrightUselessAwait, noExcessiveSelectorClasses, useMathMinMax (önerilen, uyarı önem düzeyi), noExcessiveNestedCallbacks.
  • Style grubuna bilgi (information) önem düzeyiyle yükseltilen kurallar: useVueConsistentDefinePropsDeclaration, useVueNextTickPromise (önerilen), noReactNativeLiteralColors, useConsistentTestIt, useTestHooksInOrder, useTestHooksOnTop, noPlaywrightEval, noPlaywrightElementHandle, noPlaywrightWaitForSelector, useReduceTypeParameter, useNamedCaptureGroup, useUnicodeRegex, useImportsFirst, useVarsOnTop, useThisInClassMethods, noInlineStyles, useDomQuerySelector, noTopLevelLiterals.
  • noUnusedVariables kuralına ignoreUsingDeclarations seçeneği eklendi. Etkinleştirildiğinde kural using veya await using ile bildirilen kullanılmayan değişkenleri raporlamıyor, çünkü bu bildirimler değer hiç okunmasa bile kendiliğinden temizleniyor.
  • Yeni assist eylemi useGraphqlSortedVariables eklendi; GraphQL operasyonlarının değişken tanımlarını sıralıyor.
  • Tailwind CSS yapılandırmasını barındıran CSS dosyasını Biome'a gösteren tailwind.stylesheet seçeneği eklendi. useTailwindSortedClasses, bu dosyadaki ve içe aktardığı yerel dosyalardaki @theme, @utility ve @custom-variant kurallarını okuyor; böylece kendi tema değerleriniz, yardımcı sınıflarınız ve varyantlarınız doğru sıralanıyor.
  • biome migrate eslint içinde no-unused-vars, @typescript-eslint/no-unused-vars ve unused-imports/no-unused-vars kurallarının ignoreRestSiblings ve ignoreUsingDeclarations seçeneklerinin noUnusedVariables'a taşınması eklendi. ESLint yapılandırmasında bulunmayan seçenekler ESLint'in varsayılanlarına ayarlanıyor; böylece taşınan kural aynı değişkenleri raporluyor. Örneğin "no-unused-vars": "error" artık ignoreRestSiblings'i false olarak taşıyor.
  • Verilen dosya için geliştirici bilgisi döndüren yeni biome inspect file komutu eklendi. Varsayılan olarak dosyanın CST'sini döndürüyor; --ast (AST), --ir (biçimlendirme IR'ı) ve --semantic (varsa anlamsal model bilgisi) argümanlarını kabul ediyor.
  • noEmptySource kuralı artık Markdown dosyalarını destekliyor; yalnızca boş satırlar ve HTML yorumları içeren dosyaları raporluyor.
  • noEmptySource kuralı artık YAML dosyalarını destekliyor; belgesi olmayan dosyaları ve içeriği olmayan her belgeyi raporluyor.
  • noRedundantRoles kuralına ignoreElements seçeneği eklendi. Bu seçenekte listelenen öğeler kural tarafından kontrol edilmiyor.
  • noRestrictedElements kuralı artık HTML, Vue, Svelte ve Astro dosyalarını destekliyor.
  • Bir manifest dosyasına sahip paketler aracılığıyla adlandırılmış Grit kurallarının, kural ön ayarlarının (preset) ve yapılandırmaların dağıtılması desteği eklendi. plugins alanı adlandırılmış Grit eklentilerini, configs alanı adlandırılmış yapılandırmaları dışa aktarmak için kullanılıyor. Paket girdileri adlandırılmış bir dışa aktarım seçmeli (package/rule, package/presets/preset veya package/configs/config); yalın paket girdileri desteklenmiyor. Başka bir paketten tüketilen kurallar ve yapılandırmalar, tüketen paketin adı altında sunuluyor. Paket, manifest'i ve başvurulan her dosyayı yayımlamalı. Eklenti yazarları manifest'lerini biome koşulu ve ./biome-manifest.json değeriyle sunabiliyor; kurallar biome.json'da yüklenebiliyor.
  • biome inspect plugins eklendi; eklenti kodunu yüklemeden veya çalıştırmadan çözümlenmiş kuralları eklentiye ve içe aktarılan ön ayara göre listeliyor. Include glob'ları her içe aktarmanın hangi dosyaları hedeflediğini gösteriyor ve --path bir hedef dosya seçiyor.
  • Yeni assist eylemi useGraphqlSortedArguments eklendi; GraphQL alanlarının ve direktiflerinin argümanlarını, ayrıca alan ve direktif tanımlarında bildirilen argümanları sıralıyor.
  • useSortedAttributes eylemine (JSX ve HTML) sortFirst seçeneği eklendi. Diğer tüm özniteliklerden önce, verilen sırayla sıralanacak öznitelik adlarının listesini alıyor; kalan öznitelikler olağan sıralamalarını koruyor (örneğin key'i başta tutmak için).
  • useSortedInterfaceMembers assist'ine partitionByNewLine seçeneği eklendi. Etkinleştirildiğinde boş satırla ayrılmış üyeler kendi bölümünde kalıyor ve yalnızca o bölüm içinde sıralanıyor.
  • Mevcut nursery kuralı useLogicalProperties, fiziksel CSS özellik adlarına ek olarak fiziksel CSS değerlerini de kontrol edecek şekilde geliştirildi. Kural, boyutlandırma, anchor-size() ve anchor() içindeki fiziksel değerleri tanıyor ve mevcut direction seçeneğiyle yön farkındalıklı değiştirmeler öneriyor. justify-content: left ve justify-content: right için kural, doğru mantıksal hizalama yerleşim eksenine bağlı olduğundan otomatik değiştirme önermeden tanı veriyor.
  • Yeni nursery kuralları eklendi: noDoubleComparison (birleştirilebilecek, aynı değerlerin iki karşılaştırmasını raporlar), noNestedSwitch (switch içinde switch'i yasaklar), noNestedTemplateLiterals (şablon sabitleri içinde şablon sabiti yazmayı yasaklar), noObjectConstructor (argümansız Object yapıcı çağrılarını, örn. new Object() veya Object(), yasaklar; bunlar {} ile değiştirilebilir), noSvelteClassDirective (Svelte'in class: direktifini raporlar; Svelte 5.16'dan beri class özniteliği nesneleri ve dizileri kabul ediyor), noUselessDateGetTime (Date yapıcısına geçirilmeden önce .getTime() ile dönüştürülen tarihleri raporlar), noVueLifecycleAfterAwait (setup() içinde await'ten sonra kaydedilen Vue yaşam döngüsü kancalarını raporlar), noVueRootVIf (Vue bileşen şablonunun tek kök öğesinde v-if'i yasaklar), noVueShadowNativeEvents (yerleşik tarayıcı olaylarından sonra adlandırılan Vue bileşen olaylarını raporlar), noVueVHtml (v-html direktifini yasaklar; kullanıcı metni XSS'e yol açabilir), noVueVText (v-text direktifini metin enterpolasyonu lehine yasaklar), noZeroFractions (1.0 ve 1. gibi gereksiz sıfır kesirli veya sarkan noktalı sayısal sabitleri yasaklar; Biome bunları kısaltabiliyor), useConsistentJsonFileRead (JSON.parse()'a geçirilmeden önce JSON dosyalarının tutarlı okunmasını zorunlu kılar), useMatchingFunctionName (adlandırılmış fonksiyon ifadesinin atandığı değişken veya özellikle aynı adı taşımasını gerektirir), useSimplifiedBooleanReturn (yalnızca true veya false döndüren ve koşulun doğrudan döndürülmesiyle değiştirilebilecek if ifadelerini raporlar), useSvelteKitResolve (iç bağlantıların ve goto(), pushState(), replaceState() çağrılarının SvelteKit'in resolve() ile oluşturulan yolları kullanmasını gerektirir), useSvelteReactiveClasses (Svelte dosyalarında değiştirilen veya Svelte modüllerinden dışa aktarılan Date, Map, Set, URL ve URLSearchParams nesnelerini raporlar ve svelte/reactivity sınıflarını önerir), useSvelteShorthandDirective (Svelte bind:, class: ve style: direktifleri için kısa sözdizimini zorunlu kılar), useVueMatchingComponentFileName (bir Vue bileşeninin adının dosya adıyla eşleşmesini gerektirir).
  • Yeni nursery kuralları: useCapitalizedConstructors (ESLint'in new-cap kuralının portu; adı küçük harfle başlayan new ifadelerini ve adı büyük harfle başlayan new'süz çağrıları raporlar), noExcessiveStatementsPerFunction (ESLint'in max-statements kuralının portu; yapılandırılan max değerinden (varsayılan 10) fazla ifade içeren fonksiyonları raporlar), useVueConsistentEventHyphenation (vue/v-on-event-hyphenation portu; özel bileşenlerdeki v-on direktiflerinde olay adları için tutarlı tire kullanımı zorunlu kılar), useConsistentBlockLang (Vue ve Svelte bileşenlerinin üst düzey bloklarında kullanılan dilleri zorunlu kılar; blocks seçeneğiyle yapılandırılır), noArgumentsCallerOrCallee (önerilen; arguments.caller ve arguments.callee'yi yasaklar), noSvelteUselessDerivedBy ($derived.by() çağrılarının yalnızca tek bir ifade döndüren fonksiyonlarını raporlar ve $derived(count * 2) önerir), useNamedFunction (function anahtar sözcüğüyle yazılan fonksiyonların bir ada sahip olmasını gerektirir), noUnsafeUnaryMinus (tür bilgisini kullanarak sayı veya bigint olmayan değerlere uygulanan tekli - işlecini raporlar), noSvelteObjectInTextMustaches (Svelte metin mustache'lerindeki nesne, dizi, fonksiyon ve sınıf sabitlerini yasaklar), noUselessCall (normal fonksiyon çağrısıyla değiştirilebilecek .call() ve .apply() çağrılarını raporlar), noSvelteInspect (hata ayıklamadan kalan Svelte $inspect rune kullanımlarını raporlar), useUnaryMinus (tekli eksi işleci yerine -1 ile çarpmayı veya bölmeyi raporlar), noUselessAssignment (değeri hiç okunmadan yeniden atanan veya kullanımı biten değişkenlere yapılan atamaları raporlar), noAccidentalBitwiseOperators (mantıksal operatörler &&, ||, ||= yerine muhtemelen yanlışlıkla yazılan bit düzeyinde &, | ve |= operatörlerini raporlar), noVueBooleanDefault (Vue bileşenlerinde Boolean prop'lar için varsayılan değerleri yasaklar), noPromiseExecutorReturn (new Promise() içine verilen fonksiyondan değer döndürmeyi yasaklar), useBigintLiterals (literal argümanlı BigInt() çağrıları yerine bigint sabitlerini zorunlu kılar), noSvelteAddEventListener (Svelte dosyalarındaki addEventListener çağrılarını raporlar ve svelte/events'ten on fonksiyonunu önerir), noVueRequiredPropWithDefault (hem zorunlu işaretli hem de varsayılan değeri olan Vue prop'larını raporlar), noTailwindLegacyUtilities (JavaScript ve HTML için; yalnızca geriye dönük uyumluluk için tutulan Tailwind CSS sınıflarını raporlar ve güncel adlarına düzeltir), noProcessExit (process.exit() çağrısını yasaklar), noInvalidThis (modül üst düzeyi ve metot veya yapıcı olmayan fonksiyonlar gibi tanımsız olduğu yerlerdeki this kullanımını raporlar), noJsRestrictedProperties (ESLint'in no-restricted-properties kuralını taşır; kısıtlı üye erişimini ve nesne yapısöküm atamasını işaretler, biome migrate eslint kuralın seçeneklerini koruyor), useLowercaseTestTitle (test, test takımı ve kıyaslama başlıklarının küçük harfle başlamasını gerektirir), useTailwindStaticClassStrings (Tailwind domain'ine; parçalardan birleştirilen sınıf adlarını raporlar), noTailwindRestyledComponents (JSX ve HTML bileşenlerindeki Tailwind görünüm geçersiz kılmalarını raporlar; varsayılan olarak hiçbir görünüm kategorisine izin verilmiyor, w-full ve mt-4 gibi kategorisiz yerleşim yardımcıları yok sayılıyor), noOctal (önerilen; 071 gibi eski sekizlik sabitleri ve 08 gibi başında sıfır olan ondalık sabitleri yasaklar).
  • noTailwindArbitraryValue nursery kuralına allowedCategories ve allowedClasses seçenekleri eklendi; layout gibi yardımcı kategorilerinde veya p-[13px] gibi belirli sınıflarda keyfi değerlere izin veriyor. Kural artık keyfi değiştiricileri raporlamıyor; bg-black/[0.5] ve text-sm/[18px] artık geçerli.
  • noTailwindRawColors tanısı artık kullanılacak en fazla üç sınıfı listeliyor; her biri Tailwind CSS temanızdaki, raporlanan palet rengine benzeyen bir rengi ayarlıyor. Listeyi almak için tailwind.stylesheet temanızı barındıran CSS dosyasına ayarlanmalı. Biome artık bu kural etkinken, bu stil dosyasını okuyabilmek için projenizi tarıyor.
  • Svelte bildirim etiketleri (declaration tags) için let ve const desteği eklendi. Biome artık bu etiketlerde bildirilen bağlamaları ayrıştırabiliyor, biçimlendirebiliyor ve lint'leyebiliyor.
  • Biome çok sayıda diğer türde dosyayı da kapsayacak şekilde genişletildi: SCSS desteği (.scss dosyalarını biçimlendirme ve lint'leme, .module.scss dosyalarını CSS Modules olarak tanıma), Google Apps Script (.gs) dosyaları desteği (JavaScript betiği olarak ayrıştırılır, ES modül import/export ifadeleri hata olarak raporlanır, yaygın Apps Script servis global'leri noUndeclaredVariables ve noGlobalAssign tarafından tanınır; liste javascript.globals ile genişletilebilir), .htm uzantılı dosyaların HTML olarak tanınması, npm dağıtımına Android (Termux) desteği (@biomejs/cli-android-arm64 ve @biomejs/cli-android-x64 paketleri, statik musl ikili dosyalarını yeniden kullanıyor).
  • Markdown artık destekleniyor: Markdown dosyalarını lint'leme ve biçimlendirme desteği eklendi. Biome Markdown ayrıştırıcısının ilk sürümü CommonMark ile %100 uyumlu; GitHub Flavored Markdown (GFM) gibi diğer Markdown türleri henüz desteklenmiyor. Biçimlendirici ve linter varsayılan olarak otomatik etkin.
  • Markdown ayrıştırıcısı, frontmatter ayrıştırmayı etkinleştiren isteğe bağlı bir seçenekle geliyor; etkinleştirildiğinde ilk tematik kesme --- frontmatter'ın açılış çiti sayılıyor. Ayrıca isteğe bağlı cjkFriendlyEmphasis seçeneği, etkinleştirildiğinde CommonMark CJK-friendly değişikliklerini izliyor ve Çince, Japonca veya Korece metnin hemen yanına yerleştirilen ** gibi vurgu işaretlerini tanıyor. Yalnızca Markdown'ı işleyen araç aynı değişiklikleri destekliyorsa etkinleştirilmeli.
  • Markdown biçimlendirici, Prettier biçimlendirmesiyle yüksek uyumluluğa sahip (altyapı tarafından %90'dan fazlası tespit ediliyor) ve paragrafların nasıl sarılacağını denetleyen yeni proseWrap seçeneğiyle geliyor. proseWrap always olarak ayarlandığında biçimlendirici paragrafı yapılandırılan lineWidth'e uyacak şekilde sarıyor.
  • Markdown linter, markdownlint'ten esinlenen birkaç kuralla geliyor; yakında daha fazlası eklenecek. Şimdiden kullanılabilen kurallar: useTopLevelHeading ve useConsistentHeadingLevel.
  • Biome, Markdown'da çitli kod bloklarındaki, frontmatter'daki ve HTML bloklarındaki kodu gömülü diller olarak tanıyor ve kendi dilinin biçimlendiricisi ve yapılandırmanızla biçimlendiriyor. HTML blokları yalnızca HTML biçimlendiricisi etkinse biçimlendiriliyor; sözdizimi hatası olan bir blok yazıldığı gibi kalıyor ve dosyanın geri kalanı yine biçimlendiriliyor. markdown.formatter.formatEmbeds seçeneği bunu denetliyor (varsayılan olarak etkin); false yapıldığında bu blokların kodu yazıldığı gibi kalıyor. biome migrate prettier komutu Prettier'ın embeddedLanguageFormatting seçeneğini markdown.formatter.formatEmbeds'e taşıyor. markdown.analyzeEmbeds seçeneği linter'ı ve assist eylemlerini aynı bloklarda dillerinin kurallarıyla çalıştırıyor ve sözdizimi hatalarını raporluyor; çitli kod blokları genellikle örnek veya kısmi kod içerdiğinden varsayılan olarak devre dışı.
  • Dosyada Vue direktif değerleri ve @event işleyicileri ile ilgili HTML biçimlendirici desteği eklendi: HTML biçimlendirici artık tırnaklı Vue direktif değerlerinin içindeki JavaScript'i (:prop, v-bind, v-if, bir fonksiyona başvuran @event işleyicileri ve v-slot) biçimlendiriyor. Bu değerler ve v-for değerleri çift tırnak arasında, içlerindeki dizeler tek tırnakla yazılıyor.
  • HTML biçimlendirici artık ifade içeren Vue @event işleyicilerini biçimlendiriyor. Tek bir ifade noktalı virgülsüz tek satırda kalıyor; birden fazla ifade, Prettier gibi tırnakların içinde kendi satırlarına yazılıyor. Ayrıştırıcı ayrıca bir ifadeyle başlayan işleyicileri (örn. @click="if (ok) save()") kabul ediyor; biçimlendirici, Vue'nun bunları fonksiyon gövdesi olarak derleyebilmesi için gereken ; karakterini ekliyor. Vue'nun fonksiyon gövdesi olarak derlediği işleyiciler "semicolons": "asNeeded" ile bile noktalı virgüllerini koruyor, çünkü Vue ; olmayan bir işleyiciyi ifade olarak derliyor.
  • CSS-in-JS şablonları (styled-components ve Emotion gibi) enterpolasyonlarla biçimlendirme desteği eklendi (javascript.experimentalEmbeddedSnippetsEnabled etkinken). Enterpolasyonlar JavaScript olarak biçimlendiriliyor ve onlara yapışık metin olduğu gibi korunuyor.
  • Svelte {#snippet} bloğunun parametrelerinin, tek satıra sığdıklarında ayrı satırlara konmaması sağlandı.

Önemli Değişiklikler​

  • javascript.parser.gritMetavariables seçeneği kaldırıldı. Yalnızca dahili kullanım içindi ve Biome'un JavaScript ve TypeScript dosyalarını ayrıştırmasını etkilemiyordu. Biome artık bunu bilinmeyen anahtar olarak raporlayıp yapılandırma hatasıyla çıkıyor; yapılandırma dosyasından kaldırılmalı.
  • Bir eklentinin includes seçeneğindeki glob desenleri artık mutlak dosya yoluyla değil, yapılandırma dosyasının dizinine göreli dosya yollarıyla eşleştiriliyor (files.includes ve overrides[].includes ile aynı). Önceden packages//src/ gibi bir desen hiçbir dosyayla eşleşmiyor ve eklenti hiç çalışmıyordu. **/ ile başlayan desenler çalışmaya devam ediyor; projenin mutlak yolunu içeren desenler artık eşleşmiyor ve göreli desenler olarak yeniden yazılmalı.
  • tailwind alan adını (domain) otomatik etkinleştiren bağımlılık değiştirildi. Alan adı artık package.json tailwindcss v3 veya üstünü değil, v4 veya üstünü bildirdiğinde etkinleştiriliyor (şu an Tailwind v4 desteği hedefleniyor). Alan adı her zaman elle etkinleştirilebilir.
  • useTailwindSortedClasses, Tailwind CSS v4 sınıf sıralamasına geçirildi. Kural artık üst düzey tailwind yapılandırmasında ayarlanan öznitelikleri ve fonksiyonları denetliyor; kendi attributes ve functions seçenekleri kaldırıldı. Bunları tailwind.attributes, tailwind.mergeFunctions ve tailwind.variantFunctions'a taşımak için biome migrate --write çalıştırılmalı. Kural artık project domain'inin parçası; etkinleştirmek Biome'un projenizi taramasına yol açıyor.
  • useSortedClasses nursery kuralı useTailwindSortedClasses olarak yeniden adlandırıldı. Yapılandırmanızı güncellemek için biome migrate --write çalıştırın.
  • JavaScript biçimlendiricisi artık return veya throw ifadesinden döndürülen dizi ifadesini (sequence expression) Prettier gibi parantez içine alıyor (return (a, b);).

İyileştirmeler​

  • biome migrate eslint: tailwindcss/enforces-shorthand kuralı nursery kuralları dahil edildiğinde useTailwindShorthandClasses'a, @html-eslint/no-target-blank ise noBlankTarget'a taşınıyor. Desteklenmeyen eski, kullanımdan kaldırılmış, biçimlendirici kapsamındaki ve derleyiciye bağımlı kurallar için raporlanan nedenler düzeltildi.
  • biome migrate eslint: Upstream kurallarından mevcut Biome kurallarının kapsadığı daha fazlası tanınıyor ve atlanan ek desteklenmeyen kuralların nedenleri açıklanıyor.
  • biome migrate eslint: react/forbid-elements, svelte/no-restricted-html-elements ve vue/no-restricted-html-elements kurallarının öğe listeleri noRestrictedElements'a taşınırken korunuyor; birden fazla kural yapılandırıldığında listeleri birleştiriliyor.
  • biome migrate eslint: eqeqeq'in null karşılaştırma seçenekleri noDoubleEquals yapılandırılırken korunuyor; varsayılan ESLint yapılandırmasını taşımak artık ignoreNull: false ayarlıyor, böylece x == null gibi karşılaştırmalar raporlanmaya devam ediyor.
  • biome migrate eslint: one-var, --include-inspired verilmedikçe artık useSingleVarDeclarator'a taşınmıyor.
  • Prettier yapılandırması taşınırken semi ve singleQuote ayarlanmamışsa Biome artık doğru varsayılanları kullanıyor: "semicolons": "always" ve "quoteStyle": "double".
  • Çeşitli GraphQL kurallarının (noDuplicateArgumentNames, noDuplicateEnumValueNames, noDuplicateFieldDefinitionNames, noDuplicateGraphqlOperationName, noDuplicateInputFieldNames ve noDuplicateVariableNames) tanıları iyileştirildi: her tanı artık yinelenen tanımlayıcıyı adlandırıyor, ilk geçtiği yeri vurguluyor ve tekrarlanan her geçişi işaret ediyor; aynı listede birden fazla yinelenen adlar ayrı ayrı raporlanıyor.
  • Birçok kuralın tanı kalitesi iyileştirildi: noAccessKey, noApproximativeNumericConstant, noArguments, noAsyncPromiseExecutor, noAutofocus, noBarrelFile, noBeforeInteractiveScriptOutsideDocument, noClassAssign, noCommentText, noCommonJs, noCompareNegZero, noConfusingVoidType, noConstantBinaryExpressions, noDangerouslySetInnerHtml, noDebugger, noDelete, noDocumentCookie, noDuplicateAtImportRules, noDuplicateCase, noDuplicateClassMembers, noDuplicateElseIf, noDuplicateFields, noDuplicateJsxProps, noDuplicateSelectors, noEmptyBlock, noEmptyInterface, noEmptyPattern, noEmptySource, noEmptyTypeParameters, noEqualsToNull, noExcessiveLinesPerFile, noExplicitAny, noExportsInTest, noExtraNonNullAssertion, noGlobalAssign, noGlobalEval, noGlobalIsFinite, noGlobalIsNan, noImplicitBoolean, noImplicitCoercions, noImportantInKeyframe, noImportCycles, noInferrableTypes, noInvalidBuiltinInstantiation, noInvalidDirectionInLinearGradient, noInvalidFileInputAccept, noIrregularWhitespace, noJsxPropsBind, noLabelVar, noLabelWithoutControl, noMissingVarFunction, noNegationElse, noNoninteractiveElementInteractions, noNonNullAssertion, noOctalEscape, noPrecisionLoss, noReactPropAssignments, noRedundantAlt, noRedundantRoles, noRenderReturnValue, noRestrictedElements, noRestrictedGlobals, noRestrictedImports, noRestrictedTypes, noSubstr, noUndeclaredEnvVars, noUndeclaredVariables, noUnknownFunction, noUnknownMediaFeatureName, noUnknownProperty, noUnknownPseudoClass, noUnknownTypeSelector, noUnknownUnit, noUnnecessaryConditions, noUnsafeDeclarationMerging, noUnsafeNegation, noUnsafeOptionalChaining, noUntrustedLicenses, noUnusedExpressions, noUnusedPrivateClassMembers, noUnusedTemplateLiteral, noUnwantedPolyfillio, noUselessConstructor, noUselessContinue, noUselessElse, noUselessLabel, noUselessRename, noVoidElementsWithChildren, useAdjacentOverloadSignatures, useAriaPropsForRole, useAriaPropsSupportedByRole, useBlockStatements, useCollapsedElseIf, useCollapsedIf, useConsistentArrayType, useConsistentArrowReturn, useConsistentBuiltinInstantiation, useConsistentGraphqlDescriptions, useConst, useErrorCause, useErrorMessage, useExplicitLengthCheck, useExponentiationOperator, useFilenamingConvention, useGenericFontNames, useGetterReturn, useGroupedAccessorPairs, useIsNan, useLiteralEnumMembers, useLiteralKeys, useNullishCoalescing, useNumberToFixedDigitsArgument, useObjectSpread, useOptionalChain, useSelfClosingElements, useSemanticElements, useShorthandAssign, useSimpleNumberKeys, useSimplifiedLogicExpression, useSingleVarDeclarator, useSolidForComponent, useSpreadOverApply, useTailwindSortedClasses, useTemplate, useUnifiedTypeSignatures, useValidAriaProps, useValidAriaRole, useValidAriaValues, useValidAutocomplete, useValidForDirection, useValidLang, useYield.
  • Yeni nursery kuralları eklendi: useSimplifiedBooleanReturn ve useUnaryMinus ile ilgili olanların dışında, Vue bileşenlerinde withDefaults() içinde bildirilen prop'ları algılayan Vue kuralları (örn. noVueReservedProps) iyileştirildi.
  • Biome'un nasıl ayrıştırıldığına dair: HTML ayrıştırıcısı artık karışık büyük/küçük harfli doctype bildirimlerini kabul ediyor.
  • Tür çıkarımı iyileştirildi: Eşlenmiş türler (mapped types, örn. { [K in keyof T]: T[K] }) için destek eklendi; tür duyarlı kurallar artık somut tür argümanlarıyla örneklenen genel takma adlar dahil eşlenmiş türlerin özelliklerini çözümlüyor. as yan tümcesiyle anahtarları yeniden eşleyen eşlenmiş türler hâlâ desteklenmiyor. Etiketsiz şablon sabitlerinin string olarak çıkarımı iyileştirildi; böylece noUselessTypeConversion gibi tür duyarlı kurallar String(hello ${name}) gibi kodu raporluyor. Tür duyarlı lint kurallarının doğruluğu daha fazla çıkarılan türü çözerek iyileştirildi; örneğin noFloatingPromises artık takma adlı callback'lerin döndürdüğü floating Promise'leri ve async eşleme callback'leriyle oluşturulan Promise dizilerini algılıyor.
  • as const olmayan dizi sabitleri artık TypeScript gibi dizi olarak çıkarılıyor; örneğin [1, "a"] bir demet (tuple) yerine (string | number)[] olarak çıkarılıyor. Sonuç olarak useArraySortCompare artık tür ek açıklaması olmayan dizilerdeki sort() ve toSorted() çağrılarını raporluyor.
  • Biome diline dair: Grit eklentilerinde ve biome search'te, contains ifadesinden sonra gelen ek koşullar artık eşleşen her düğümü deniyor; ilk eşleşme kalan koşulları sağlamadığında başarısız olmuyor.
  • CSS metadeğişkenleri (metavariable) bileşik seçicilerde, karmaşık seçicilerde ve özellik adlarında düzeltildi (Grit eklentileri ve biome search'te): $tag:hover { color: red; }, $parent .child {} ve $property: red gibi desenler artık istenen kurallar ve bildirimlerle eşleşiyor.
  • GritQL JSON parçacıkları düzeltildi; { $key: $value } gibi desenler artık nesne anahtarlarında ve değerlerinde metadeğişkenleri bağlayabiliyor.
  • biome search tarafından raporlanan eşleşme sayısı düzeltildi. Özet ve JSON raporlayıcılarının matches alanı artık aranan dosya sayısı yerine her eşleşmeyi sayıyor.
  • useBetterDomTraversing, raporlanan ifadeden sonra bir yorum geldiğinde (örn. element.childNodes[0] /* first */) düzeltmesini sunacak şekilde iyileştirildi; düzeltme yorumu koruyor.

Performans​

  • Projelerde çok sayıda dosya varken temizleme sırasında Biome CLI'nin performansı iyileştirildi.
  • Yorumsuz veya az yorumlu dosyalarda biçimlendiricinin performansı iyileştirildi.
  • --use-server ile çalışan komutların (örn. biome check --use-server) performansı iyileştirildi; Biome daemon'u artık bir komutun dosyalarını aynı anda en fazla dört dosya yerine tüm kullanılabilir CPU çekirdeklerinde işliyor.
  • Lint ve assist performansı, özellikle az sayıda kural etkinken (örn. --only ile) iyileştirildi.
  • Syntax düğümünün aralığı kenar token'ları ayrılmadan hesaplanarak lint performansı iyileştirildi.
  • Aynı dosyanın başka bir dilinde bir değişkenin kullanılıp kullanılmadığını kontrol eden noUnusedVariables, noUnusedImports ve diğer lint kurallarının performansı iyileştirildi.
  • Linter ve assist performansı bazı dosyalarda %50'ye kadar iyileştirildi.
  • Sözdizimi hatası olmayan dosyalar için biome format --write performansı iyileştirildi; Biome artık bu dosyaların biçimlendirilmiş kodunu ikinci kez ayrıştırmıyor. JSON dosyaları etkilenmiyor.
  • noUnreachable ve useGetterReturn gibi kontrol akışını analiz eden lint kurallarının performansı iyileştirildi.
  • noIrregularWhitespace performansı iyileştirildi; kural düzensiz boşluk içermeyen dosyalarda çok daha az zaman harcıyor.
  • noTsIgnore performansı iyileştirildi; kural @ts-ignore yorumu içermeyen dosyalarda çok daha az zaman harcıyor.
  • biome search komutunun performansı iyileştirildi.
  • Tür duyarlı JavaScript lint kurallarındaki performans gerilemesi, yalnızca istenen türleri çıkararak ve dışa aktarım çözümlemesini önbelleğe alarak düzeltildi.
  • Biome biçimlendiricisinin performansı genel olarak yaklaşık %7'ye kadar iyileştirildi.

Hata Düzeltmeleri​

  • Boş iç içe yapılandırma dosyalarının biome migrate --write ile geçersiz sondaki virgül eklenmeden başarıyla taşınması sağlandı.
  • useImportExtensions artık extensionMappings veya forceJsExtensions kullanılırken .jsx veya .tsx uzantılı göreli import'ları kaçırmıyor; kural, yapılandırılan karşılık var olan bir dosyaya çözümleniyorsa bu import'ları raporluyor.
  • useImportExtensions artık html.experimentalFullSupportEnabled etkinken Vue, Svelte ve Astro dosyalarında uzantısız göreli import'ları raporluyor.
  • noConfusingVoidType, yalnızca void ve never içeren birleşim türlerinde (örn. void | never) artık void'i raporlamıyor.
  • Svelte biçimlendiricisi, gereksiz bind: başlatıcılarını kısa sözdizimine dönüştürürken artık bağlama adlarını çoğaltmıyor.
  • Tailwind CSS ayrıştırıcısı tire içeren yardımcı adlarını bölüyordu; drop-shadow!, flex-grow-0 ve max-w-screen-lg gibi sınıflar artık sırasıyla drop-shadow, flex-grow ve max-w-screen'i yardımcı ad olarak koruyor.
  • Astro ve Vue dosyalarında <?xml version="1.0" encoding="UTF-8"?> gibi işleme yönergeleri artık ayrıştırma hatalarına yol açmıyor.
  • HTML ve Svelte dosyalarında bir etiketin sonundan hemen önce gelen ? adlı öznitelik ayrıştırma hatasına yol açıyordu; <div a ?> artık Astro ve Vue dosyalarındaki gibi a ve ? özniteliklerine sahip.
  • Tailwind sınıf ayrıştırıcısının, seçicisi öznitelik seçiciyle başlayan keyfi varyantları reddetmesi düzeltildi; [[data-variant=legend]+&]:-mt-1.5 ve group-has-[[data-slot=item-description]]/item:self-start gibi sınıflar artık doğru ayrıştırılıyor.
  • noSelfAssign, eşdeğer özellik adları nokta ve köşeli parantez gösterimiyle (sayısal ve dize sabiti anahtarlar dahil) kullanıldığında kendi kendine atamaları algılıyor.
  • GritQL: contains'ten sonra gelen ek koşulların eşleşen her düğümü denemesi düzeltildi (yukarıdaki ile ilgili).
  • noUnreachable, noUnreachableSuper, useGetterReturn, useIterableCallbackReturn ve noFallthroughSwitchClause kurallarının, etiketli bir döngü veya switch içinde etiketsiz break veya continue içeren fonksiyonları atlaması düzeltildi.
  • Yorumlarla başlayan çok satırlı fonksiyon argümanları için CSS biçimlendirmesi düzeltildi.
  • Bir CSS kuralının üstündeki yorumun, kuralın sarılmış seçicisinin girintisini kaldırması düzeltildi.
  • CSS ayrıştırıcısı artık 2xl kesme noktası gibi rakamla başlayan Tailwind @custom-variant adlarını kabul ediyor.
  • html.experimentalFullSupportEnabled ile editör artık Astro, Vue, Svelte ve HTML dosyalarındaki ifadeler ve betikler gibi gömülü koddaki tanılar için kod eylemleri sunuyor.
  • Biçimlendiricinin, JSX'te yayılan (spread) boş bir nesne, dizi veya sınıf içindeki yorumları çoğaltması düzeltildi; her biçimlendirme geçişi yorumun bir kopyasını daha ekliyordu.
  • Biome artık, iç ok fonksiyonunun parametreleri yapısöküm (destructuring) deseni kullandığında üçlü ifade sonuçlarındaki curried ok fonksiyonlarını (örn. cond ? (x) => ({ a, b }) => body : alt) doğru ayrıştırıyor.
  • noAdjacentSpacesInRegex düzeltmesi artık regex karakter sınıfı ([...]) içinde uygulanmıyor; orada düzeltme sınıfın eşleştirdiği karakterleri değiştiriyordu.
  • noTsIgnore artık @ts-ignore'dan yalnızca söz eden yorumları (örn. "// see the note on @ts-ignore below" veya JSDoc metni) raporlamıyor. Kural artık TypeScript gibi yalnızca bir yorumun başındaki veya blok yorumun son satırının başındaki @ts-ignore'u raporluyor ve düzeltme yalnızca direktifi yeniden yazıyor.
  • biome check --write, Svelte dosyalarında idempotent değildi; <script> bloklarındaki çok satırlı şablon sabitleri ve <style> bloklarındaki blok yorumları her çalıştırmada fazladan bir girinti seviyesi kazanıyordu.
  • Svelte class: ve style: direktif adlarının ayrıştırılması düzeltildi. style:color|important gibi |important değiştiricileri artık adın parçası değil, değiştirici olarak ayrıştırılıyor ve <input class:invalid/> içindeki / artık etiketi kapatıyor.
  • noUnusedVariables artık <div class:active> ve <div style:color> gibi class: ve style: direktif kısaltmalarıyla yalnızca kullanılan Svelte bileşenlerindeki değişkenleri raporlamıyor.
  • --use-server ile çalışan komutların bazı dosyaları kontrol etmek yerine "cancelled because of pending write" raporlaması düzeltildi; Biome artık iptal edilmiş bir istek gönderiyor ve komut, --use-server olmadan çalıştırmayla aynı tanıları raporluyor.
  • useVueConsistentDefinePropsDeclaration kuralındaki yanlış pozitif düzeltildi; kural artık a.b.c(0) gibi çağrıları veya yerel olarak içe aktarılan bir defineProps fonksiyonuna yapılan çağrıları raporlamıyor, yalnızca Vue'nun defineProps makro çağrılarını denetliyor.
  • noVueDuplicateKeys kuralındaki yanlış pozitif düzeltildi; withDefaults() ile sarılmış prop'lardan oluşturulan değişkenler artık bu prop'ların yinelenenleri olarak raporlanmıyor.
  • noUnreachable ve useGetterReturn kurallarındaki yanlış negatif düzeltildi; test ifadesi doğru (truthy) bir sabit olan for döngüleri (örn. for (; true ;)) artık while ve do...while ile tutarlı olarak sonsuz döngü sayılıyor.
  • Biome artık Vue <script setup lang="ts"> bloklarının generic özniteliğini (örn. generic="TData extends RowData") ayrıştırıp biçimlendiriyor. Bildirilen tür parametreleri artık noUndeclaredVariables tarafından raporlanmıyor; noUnusedVariables ve noUnusedImports da parametreleri hesaba katıyor.
  • useConsistentObjectDefinitions artık { b: function c() {} } gibi adlandırılmış fonksiyon ifadelerini raporlamıyor; metotlara dönüştürmek fonksiyonun adını veya adının gövde içinde nasıl çözümleneceğini değiştirebilir.
  • CSS paket import'ları (style export koşulunu kullananlar, örn. tw-animate-css) düzeltildi. tailwind.stylesheet yapılandırıldığında useTailwindSortedClasses artık içe aktarılan paketlerden (geçişli CSS import'ları dahil) yardımcı sınıfları ve tema değerlerini okuyor.
  • Mevcut nursery kuralı useTailwindShorthandClasses'ın döndürme, bölücü, içerik hizalaması ve özel genişlik/yükseklik token'ları için geçersiz veya davranışı değiştiren kısaltmalar önermesi düzeltildi. Kısaltma düzeltmeleri artık önde veya sonda ! işaretleriyle !important'ı koruyor.
  • biome komutunun npm'den kurulu sürümü, Biome ikili dosyası bir sinyalle (SIGABRT veya SIGSEGV çökmesi gibi) öldürüldüğünde artık sıfırdan farklı bir kodla çıkıyor; önceden 0 koduyla çıkıp çalıştırmayı başarılı raporluyordu.
  • Biome dil sunucusunun editöre boş mesajla gönderdiği hatalar düzeltildi; örneğin iç içe bir yapılandırma dosyası "root": true ayarladığında editör günlükleri artık boş satır yerine "Found a nested root configuration, but there's already a root configuration." gösteriyor.
  • noDuplicateFontNames artık, tarayıcılarda devralınan yazı tipi boyutunu koruyan font-family: monospace, monospace'e izin veriyor.
  • useSortedProperties assist'i artık --font-*: initial gibi Tailwind CSS joker sıfırlamalarının ve diğer özel özelliklerin göreli sırasını koruyor.
  • noUselessStringConcat güvenli düzeltmesi artık sayıları ECMAScript Number::toString semantiğine göre doğru dizeye çeviriyor; bilimsel gösterim (1e21 ve 0.1e-6 gibi), alternatif tabanlar ve ayırıcıları doğru işliyor.
  • Geçersiz kılmada (override) etkinleştirilen project ve types domain'lerindeki kurallar artık o geçersiz kılmayla eşleşen dosyalar için çalışıyor.
  • none olarak ayarlanan bir domain'deki kurallar, bir geçersiz kılma aynı gruptaki başka bir kuralı yapılandırdığında artık devre dışı kalmaya devam ediyor.
  • JavaScript assist geçersiz kılmaları ve HTML ayrıştırıcı, linter ve assist geçersiz kılmaları artık eşleşen dosyalara uygulanıyor.
  • noProto kuralındaki yanlış pozitifler (hesaplanmış tanımlayıcılar, tırnak içeren özellik adları ve etiketli şablonlar) düzeltildi; obj[proto] ve obj["proto"] gibi ifadeler artık kuralı tetiklemiyor. Parantezler, TypeScript sarmalayıcıları ve virgül ifadeleri üzerinden yapılan proto erişimlerinde kaçırılan tanılar da düzeltildi (örn. obj[('proto')]).
  • noUnusedImports artık yalnızca işaretlemede veya başka bir script bloğunda $store abonelikleriyle kullanılan Svelte import'larını tanıyor.
  • Astro kısa öznitelikleri için, yalın bir tanımlayıcı yerine {object?.something} gibi bir ifade kullanıldığında oluşan ayrıştırıcı hatası düzeltildi.
  • useVueDefineMacrosOrder, yanlış yerleştirilmiş yalın makro çağrılarını kaçırıyor ve atanmış çağrılar için yanlış makroyu raporluyordu; güvenli olmayan düzeltmesi artık tüm makro ifadelerini tek uygulamada sıralıyor ve yorumlarını ve ifade sınırlarını koruyor.
  • Dışa aktarılan bir tür takma adı, arayüz veya enum bildirimi içeren dosyalar (örn. export type Props = { id: string };) artık useReactCompiler tarafından analiz ediliyor; önceden kural bu dosyaları sessizce atlıyordu.
  • noDescendingSpecificity, iç içe seçiciler için yanlış özgüllük (specificity) hesaplıyor ve @container ile @starting-style blokları içindeki iç içe seçicileri yok sayıyordu; bu düzeltildi.
  • noDuplicateSelectors, @container ve @starting-style blokları içindeki iç içe seçicileri yok sayıyordu; bu düzeltildi.
  • noIrregularWhitespace artık CSS ve SCSS dizelerinin içindeki düzensiz boşlukları raporlamıyor; iç içe kurallarda yinelenen tanıları önlüyor ve gömülü CSS parçacıklarını kontrol ediyor.
  • noUselessStringConcat'ın ilgili düzeltmesi dışında, useNamingConvention'ın declare global içindeki veya harici modül bildirimi içindeki bir ad alanında iç içe bildirimi raporlaması düzeltildi; her iki konum da her zaman yok sayılıyor ve kural güvenli düzeltme sunduğu için biome check --write bildirimi yeniden adlandırıyordu.
  • React 19 geçiş olay işleyicileri için noUnknownAttribute kuralındaki yanlış pozitifler düzeltildi. onTransitionCancel, onTransitionRun, onTransitionStart ve capture varyantları, React bağımlılık aralığı React 19 veya üstüne izin verdiğinde tanınıyor.
  • Svelte {#snippet} bloğunun parametrelerinin tek satıra sığdıklarında ayrı satırlara konmaması düzeltildi.
  • Biome'un Tailwind sınıf ayrıştırıcısının, keyfi değerlerdeki parantezli ve tekli ifadeler için geçersiz sözdizimi ağacı üretmesi düzeltildi; w-[calc(1px+(2px))], w-[calc((100%_-_2rem)/3)] ve w-[calc(1px*-(2px))] gibi sınıflar artık doğru ayrıştırılıyor.
  • İkiden fazla seçeneği olan Tailwind @theme at-kurallarının ayrıştırılması düzeltildi; Biome artık prefix(...) dahil herhangi sayıda seçeneği kabul ediyor (Tailwind'in kendi tailwindcss/index.css dosyasındaki @theme default inline reference { ... } kuralı gibi).
  • Tailwind sınıf ayrıştırıcısının, fallback değeri parantez içeren CSS değişkeni kısaltmalarını reddetmesi düzeltildi; bg-(--a,var(--b)), bg-(--a,calc(1px)) ve after:bg-(--drawer-bleed-background,var(--color-popover)) gibi sınıflar artık varyantlarda (max-(--a,var(--b)):flex) ve değiştiricilerde (bg-red-500/(--a,var(--b))) dahil doğru ayrıştırılıyor.
  • biome stop komutunun, Biome daemon'u durmuş olmasına rağmen 15 saniye bekleyip "the request to the remote workspace timed out" ile başarısız olması düzeltildi; komut artık daemon kapanır kapanmaz dönüyor.
  • CSS ayrıştırıcısı artık if() dal değerlerindeki yalın if tanımlayıcılarını doğru ayrıştırıyor (örn. if(style(--enabled: true): if; else: serif)).
  • Grit ve Tailwind ile ilgili: Tailwind sınıf ayrıştırıcısı düzeltmeleri yukarıda belirtilmiştir.
  • noDuplicateFontNames ve noUnknown* gibi kurallarda yukarıda belirtilenlerin dışında ek değişiklik yok.