مایکروسافت و Uno پلتفرم SkiaSharp 4 را منتشر کردند
مایکروسافت و پروژه Uno اولین نسخههای پایدار شاخهٔ SkiaSharp 4 را منتشر کردند — نسخههای 4.148.0 و 4.150.0 — و شاخهٔ پیشانتشار 4.151.0 نیز برای نمایش الگوی جدید هماهنگسازی نسخهها با مایلاستونهای بالادست Skia در دسترس قرار گرفت.
مهمترین تغییرات در هر انتشار
SkiaSharp 4.148.0 — انتقال به Skia m148
- موتور همراه به Skia m148 ارتقا یافت.
- پشتیبانی از کنترل محورهای فونت متغیر (OpenType)، انتخاب پالت فونتهای رنگی و کدگذاری WebP متحرک از طریق
SKWebpEncoderاضافه شد. - APIهای بدونکپی برای جریانها و شکلدهی متن معرفی شدند و چرخهٔ عمر اشیاء بومی مشترک بازطراحی شد تا خطاهای use-after-free کاهش یابد.
SkiaSharp 4.150.0 — بهروزرسانی به Skia m150 و ابزارهای تشخیصی
- موتور به Skia m150 ارتقا یافت و APIهای تشخیصی و فیلترینگ جدید افزوده شد.
SKPaint.GetFastBounds()برای تعیین مرز محافظهکارانه در حذف دیدپذیری (visibility culling) اضافه شد.SKImageFilter.CreateCrop()وCreateEmpty()برای برش و درج مراحل شفاف no-op در زنجیرهٔ فیلترها فراهم شدند.SKColorFilter.CreateOverdraw()برای نمایش نقاط داغ رندر معرفی شد و wrapper مربوط بهSKSurface.Canvasکش شد تا تخصیصهای مدیریتی مکرر در حلقههای رندر کاهش یابد.
SkiaSharp 4.151.0 (پیشانتشار) — تمرکز بر عملکرد کد مدیریتشده
- انتقال به Skia m151 و بهینهسازی مسیرهای پرتکرار: تبدیل رنگ، پیشضرب، پارس تگها و مسیرهای پرکار با جایگزینی فراخوانیهای مکرر P/Invoke به عملیات مدیریتشده بهتر شدهاند.
- هارفبز (HarfBuzz) رمزگذاری UTF-8 را با بافرهای استخرشده انجام میدهد و
SKShaperگلیفها را از طریق spanهای بدونکپی عرضه میکند. - بارگذاریهای بدون تخصیص با استفاده از
ReadOnlySpanبرای پارس رنگهای هگزادسیمال اضافه شدهاند. - کتابخانههای Emscripten 5.0.6 برای پشتیبانی از مدل مدیریت استثنای
exnrefدر WebAssembly/.NET 11 گنجانده شدند و چند اشکال بومی و رگرسیون CPU رفع شدهاند.
نتایج اولیه عملکرد و محدودیتها
در آزمایشهای اولیهٔ مایکروسافت روی رندرهای مبتنی بر GPU که سایهها و لایهها غالب بودند، تا 24% بهبود مشاهده شد. در یک سناریوی آزمایشی، شیدرهای نویز Perlin مبتنی بر CPU حدود 6 برابر سریعتر اجرا شدند. این بهبودها وابسته به سختافزار و درایورها هستند؛ صحنههایی که محورشان متن، نمودار یا نقشههای وکتوری است تغییر قابلتوجهی نشان ندادند.
تغییرات ناسازگار و نکات مهاجرت
- SkiaSharp 4 ارتقای شکستنساز نسبت به شاخهٔ 3 است: اعضای منسوخشدهٔ متن و فونت در
SKPaintاکنون خطای زمان کامپایل تولید میکنند و باید بهSKFontمنتقل شوند. - یک
SKFontبدون پارامتر اکنون ازSKTypeface.Emptyاستفاده میکند؛ تا زمانی که تایپفیس صریحاً تخصیص نیابد، اندازهگیری یا رندر متن انجام نمیشود. - نسخهٔ 4.150.0 بستهٔ ادغام با .NET Interactive و Polyglot Notebooks را حذف کرد؛ نمونهها و گردشهای کاری متکی بر این بستهها باید بازبینی شوند.
راهنمای سریع مهاجرت
- لیست توابع منسوخ را بررسی و استفاده از
SKPaintبرای تنظیمات فونت را بهSKFontمنتقل کنید. - در مسیرهای بحرانی رندر، تستهای عملکردی روی سختافزار هدف اجرا کنید تا رفتار درایورها مشخص شود.
- در پروژههایی که به .NET Interactive یا Polyglot Notebooks وابستهاند، نمونهها را بازنویسی یا جایگزین کنید.
چرخه انتشار همزمان با مایلاستونهای Skia
این حرکت از m148 به m150 و m151 نشان میدهد که هماهنگسازی با مایلاستونهای Skia در دستور کار قرار دارد. هدف تیم این است که بستههای پایدار با نسخههایی هماهنگ شوند که در کانالهای Chrome Stable و Extended Stable استفاده میشوند، در حالی که پیشانتشارها نزدیک به مسیر Chrome Beta نگه داشته شوند؛ الگوی منظمتر انتشار باعث افزایش پیشبینیپذیری و همگرایی با اکوسیستم مرورگر میشود.
منابع و دانلود
پکیجهای SkiaSharp در NuGet قابل دسترسی هستند و کد منبع و یادداشتهای رسمی انتشار در مخزن SkiaSharp در GitHub منتشر شدهاند. برای نمونهها و راهنمای مهاجرت میتوان از گالری تعاملی و مستندات رسمی استفاده کرد.
نکات عملی برای توسعهدهندگان
همزمانسازی چرخهٔ انتشار فرصت سریعتر دسترسی به بهبودهای موتور و ابزارهای تشخیصی را فراهم میکند، اما نیاز به آزمون دقیق و پالایش کد در پروژههای متکی به APIهای قدیمی دارد. پیش از ارتقا، مسیرهای بحرانی رندر و تعامل با تایپفیسها را ارزیابی و تستهای عملکردی متنوعی روی سختافزارهای هدف اجرا کنید تا از بروز مشکلات ناخواسته جلوگیری شود.





