
# Uyumluluk ve Yükseltme

Bu sayfa; yükseltme yapmadan veya çıktının tam eşleşmesine güvenmeden önce bilmeniz gerekenleri bir araya getirir: çalışma zamanı gereksinimleri, uyarlamanın hangi TailwindCSS sürümünü izlediği, TailwindPHP'in TailwindCSS'den bilerek ayrıldığı noktalar ve her sürüme ait notlar. Tüm geçmiş [CHANGELOG.md](https://github.com/inline0/tailwindphp/blob/main/CHANGELOG.md) içinde yer alır.

## Gereksinimler

- **PHP 8.2 veya üzeri.** Test paketi PHP 8.2, 8.3 ve 8.4 sürümlerinde çalışır.
- **`ctype` ve `mbstring` uzantıları.** Derleyici, `ctype_*` ve `mb_chr()` işlevlerini çağırır. Bunlar çoğu PHP derlemesiyle ve resmî Docker imajlarıyla birlikte gelir; ancak `composer.json` henüz bunları bildirmez ([#11](https://github.com/inline0/tailwindphp/issues/11)). Bu nedenle bunlar olmadan yapılan bir derlemede paket kurulur, ancak çalışma zamanında başarısız olur.
- **İsteğe bağlı: `pcntl`.** CLI'ün `--watch` modu, `SIGINT`/`SIGTERM` durumunda düzgün biçimde durabilir. Bu olmadan da izleme modu çalışır.

Node.js, FFI veya yerel ikili dosyalar kullanılmaz.

## İzlenen TailwindCSS sürümü

1.7.0 sürümü **TailwindCSS v4.3.3** sürümünü izler. Yukarı akış deposu, `reference/tailwindcss` içinde git alt modülü olarak belirli bir sürüme sabitlenmiştir; test paketleri bu sabitlenmiş çalışma ağacından çıkarılır ve 4,427 testleri her gönderimde çalışır (bkz. [Performans ve test](https://tailwindphp.inline0.dev/tr/docs/advanced/performance)). Uyarlanan eklentiler `@tailwindcss/typography` ve `@tailwindcss/forms`'i, sınıf yardımcı programları ise her biri aynı şekilde sabitlenmiş olan clsx, tailwind-merge ve CVA'yı izler.

## TailwindCSS ile bilinen farklar

### Serileştirme ayrıntıları

Oluşturulan CSS, referans test paketleriyle eşleşir. TailwindCSS CLI çıktısındaki bazı serileştirme ayrıntıları farklıdır; ancak bunların hiçbiri basamaklandırmayı değiştirmez:

- Üretici önekleri: başvurunun hem yazılmış `-webkit-*` satırını hem de oluşturulan bir satırı verdiği yerde TailwindPHP tek satır üretir.
- Alt düzeye dönüştürülen sözde öğeler (`::file-selector-button`, `::-webkit-datetime-edit-*`), her sözde öğe için ayrı kurallara bölünmek yerine yazıldıkları seçici listelerinde kalır.
- Tek tırnakla yazılmış dizeler tek tırnaklı kalır (`'Segoe UI'`); çift tırnağa dönüştürülmez.
- Birlikte bulunan uzun biçimli özellikler kısaltılmış bir özelliğe dönüştürülmez (Tailwind'in kendi çıktısı buna ihtiyaç duymaz).
- `.p-0`, başvurunun CLI olarak `padding: 0` ürettiği yerde `padding: 0px` biçimini korur; çünkü çıkarılan test derlemi `0px` biçimini sabitler. Küçültücü bunu `0` olarak kısaltır.

### Dahil olmayanlar

TailwindPHP, CSS derleyicisidir. Tailwind ekosisteminin düzenleyici araçlarını (IntelliSense, otomatik tamamlama, sınıf sıralama) ve kaynak haritalarını içermez; bu nedenle CLI için `--map` seçeneği yoktur.

### İçerik tarama

`tw::generate()` ve `TailwindCompiler::generate()` sınıf adlarını yalnızca `class` ve `className` özniteliklerinden okur. PHP veya JavaScript dizelerinde tutulan sınıf adları için [`tw::extractCandidatesFromStrings()`](https://tailwindphp.inline0.dev/tr/docs/api#twextractcandidatesfromstrings) ya da `@source inline("…")` kullanın. `@source` yol biçimleri API tarafından yok sayılır, CLI tarafından ise yalnızca kısmen dikkate alınır (aşağıya bakın).

### Mevcut sürümdeki bilinen sorunlar

| Alan | Mevcut davranış | Sorun |
|---|---|---|
| CLI `@source` | Yollar ve glob kalıpları uygulanmaz; bunun yerine girdi dosyasının dizini taranır ve `@source not` hiçbir şeyi hariç tutmaz. Bkz. [CLI'in taradığı alanlar](https://tailwindphp.inline0.dev/tr/docs/cli#what-the-cli-scans) | [#8](https://github.com/inline0/tailwindphp/issues/8) |
| CLI `--optimize` | `--minify` gibi küçültme yapar | [#9](https://github.com/inline0/tailwindphp/issues/9) |
| CLI uzun seçenekler | `--input file.css` (boşlukla ayrılmış) yok sayılır; `--input=file.css` veya `-i file.css` kullanın | [#13](https://github.com/inline0/tailwindphp/issues/13) |
| Eklenti varyantları | `addVariant()`/`matchVariant()` varyantları ve tipografi öğesi değiştiricileri (`prose-headings:` …), seçicileri olmadan derlenir | [#10](https://github.com/inline0/tailwindphp/issues/10) |
| `@apply` karışımları | `@apply --my-mixin;` aktarılmak yerine kaldırılır | [#12](https://github.com/inline0/tailwindphp/issues/12) |
| Başvuru içe aktarmaları | Yardımcı sınıflar içe aktarımından önce bir başvuru içe aktarımı gelirse çıktı boş olur; `@import "tailwindcss" reference` etkisizdir | [#14](https://github.com/inline0/tailwindphp/issues/14) |

## Yükseltme notları

### 1.7.0

- **Çıktı, 1.6.x ile bayt düzeyinde farklılık gösterir** ancak işlevsel olarak eşdeğer olan TailwindCSS v4.3.3 referansıyla aynı kalır. Görülebilen değişikliklerden bazıları:
  - Boşluk çarpanları: `p-1`, `calc()` yerine `padding: var(--spacing)` üretir; `0` çarpanı ise birimsiz sıfır uzunluk üretir.
  - Kesirler yüzdeye dönüştürülür: `w-1/2`, `width: 50%` üretir.
  - Renkler: `oklch()`/`oklab()` açıklık değeri yüzde olarak serileştirilir (`oklch(62.3% .214 259.815)`); `white` ve `black` kısaltılarak `#fff` ve `#000` olur.
  - CSS2 sözde öğeleri tek iki noktayla serileştirilir (`:before`, `:after`, `:first-letter`, `:first-line`).
  - İç içe `@media`/`@supports`/`@container` kuralları sona taşınmak yerine kaynak sırasına göre bulundukları yerde düzleştirilir; bildirimler lightningcss'in sıralamasına göre yeniden düzenlenir ve gölgelenen yinelenen bildirimler kaldırılır.
- **Çıktıya göre anahtarlanan önbellekler bir kez geçersiz kalır.** `tw::generate()` dosya önbelleğinin anahtarında TailwindPHP sürümü bulunmaz; bu nedenle yükseltmeden sonra `tw::clearCache()` komutunu (veya `cache` olarak verdiğiniz dizini) çalıştırın. [derleyici durumu önbelleği](https://tailwindphp.inline0.dev/tr/docs/advanced/caching#compiler-state-cache) kendini geçersiz kılar.
- **Yeni:** yazar CSS'da `@variant`, `@apply`'de CSS mixin'leri, `@media reference` ve `@import "…" reference`, işlevsel `@utility` için tam `--value()`/`--modifier()` altyapısı, daha sıkı `@utility` adı doğrulaması ve `tw::compile()` için `polyfills` seçeneği.

### 1.6.1

- **Yeni:** `container` yardımcı programı (`width: 100%` ve her kesme noktası için bir `max-width`).
- Birleştirilmiş `--tw-*` değişkenleri (translate, scale, rotate, skew, filtreler ve diğerleri) artık `@property` ile kaydediliyor; böylece stil sayfalarına bu `@property` kuralları ekleniyor ve `translate-x-7` gibi dönüşümler tarayıcıda etkili oluyor.

### 1.6.0

- **Yeni:** kalıcı derleyici durumu önbelleği (`tw::compile()` ve `TailwindCompiler` üzerinde `stateCacheFile`, `StateCache\compileCssCached()`) ve ayrıştırılmış `parseCssState()`/`finalizeCssState()`/`compileParsed()` işlevleri. Mevcut çağrılar tam olarak eskisi gibi çalışır.

### 1.5.0

- `TailwindCompiler` alt sınıfları `generate()` veya `css()` yöntemlerini geçersiz kılıyorsa isteğe bağlı `bool $minify = false` parametresini eklemelidir; PHP, üst sınıfın isteğe bağlı parametresini kaldıran geçersiz kılmaları reddeder.
- Küçültülmüş çıktı serileştiriciden gelir; bu nedenle küçültülmüş baytlar 1.4.x değerinden biraz farklıdır (küçültülmüş çıktıya göre anahtarlanan önbellekler bir kez geçersiz kalır).
- **Yeni:** uzun ömürlü tek bir derleyiciden sayfa başına CSS için `generateExact()` ve `cssExact()`.
