חזרה

Cloudflare מציגה את tsrs, פורט של מהדר TypeScript ל-Rust
SiTech AI Team3 דק׳ קריאה

Cloudflare מציגה את tsrs, פורט של מהדר TypeScript ל-Rust

Cloudflare, VoidZero ו-Max Schwenk מ-Owner.com בונים את tsrs, פורט של מהדר TypeScript לשפת Rust בשיתוף עם צוות TypeScript, בתוך חבילת הכלים Oxc כדי להאיץ בדיקות ולצמצם שימוש בזיכרון.

פורט נאמן ל-Rust

Cloudflare ו-VoidZero עובדים עם Max Schwenk מ-Owner.com על tsrs, פורט של מהדר ה-TypeScript לשפת Rust. הפרויקט מפותח כחלק מחבילת הכלים למהדר JavaScript בשם Oxc ונבנה בשיתוף פעולה הדוק עם צוות TypeScript. המטרה המוצהרת היא לעזור למפתחים לבלות פחות זמן בהמתנה לבדיקות קוד ויותר זמן בבנייה, תוך הפיכת TypeScript למהיר יותר וחסכוני יותר בזיכרון.

הצוותים אומרים שזה לא fork של TypeScript. הם אומרים שצוות TypeScript צריך להישאר בשליטה מלאה על עיצוב השפה וכיוונה, ושפורט ל-Rust חייב לעקוב מקרוב אחר החלטות ה-upstream, אחרת הוא עלול בסופו של דבר להתפרק ולהפוך לבלתי תואם. TypeScript ב-Rust שואף להיות פורט נאמן. ניתן להתקין גרסה ניסיונית מ-npm באמצעות 'npm install tsrs' ולהריץ אותה עם 'npx tsrs'.

טענות ביצועים וזיכרון

מדדי ביצועים מוקדמים ששיתפו הצוותים מראים ש-tsrs מהיר עד 8 פעמים וצורך כ-70% פחות זיכרון מ-TypeScript 7.0 כאשר משתמשים באותו מספר עובדי בדיקת טיפוסים. הם אומרים שההשוואה נערכה יחד עם צוות TypeScript כדי להתאים לאותה תצורה. TypeScript 7.1 beta כבר מהיר עד 2.5 פעמים מ-TypeScript 7.0, וחלק מהאופטימיזציות הללו הועברו מ-tsrs ל-upstream.

כברירת מחדל, tsrs מגיע עם תצורה אדפטיבית שתלויה בסוג המכונה. ברירת המחדל הזו צורכת יותר זיכרון אבל אפילו מהירה יותר. הצוותים גם מציינים שחלק ממדדי הביצועים הציבוריים משתמשים בסוגי מכונות גדולים יותר או באפשרויות שונות מברירות המחדל של TypeScript, מה שיכול לשנות את טענות הביצועים.

למה Rust משמעותי מעבר למהירות

הצוותים אומרים שניסיונות פורט קודמים הצליחו במידה מוגבלת, כאשר הפורט של צוות TypeScript מ-JavaScript ל-Go הוא זה שהצליח. הם טוענים שעדיין יש ביקוש ל-TypeScript מהיר יותר. Rust מוצג כהתאמה טובה יותר ל-WebAssembly כי קומפילציה של Go ל-WebAssembly מביאה גם את איסוף הזבל של Go, בעוד מודל הזיכרון של Rust מאפשר אינטראקציות זיכרון ישירות בין אורח WebAssembly למארח.

Cloudflare Workers תמכו זה מכבר ב-WebAssembly, והחברה הכריזה לאחרונה על תמיכה מקורית ב-Rust ב-Workers באמצעות יעד Emscripten עבור wasm-bindgen. הצוותים אומרים שטביעת רגל זיכרון קטנה הופכת את הרצת מערכות בנייה ופריסה בלולאות צפופות על Workers למעשית, ואפילו להריץ שרשראות כלים לפיתוח מבודדים (sandboxed) על Cloudflare, בדפדפן, במכשירים מוטבעים או ביישומי IoT.

תחזוקה וצעדים הבאים

Cloudflare אומרת שהיא עובדת עם Theo Browne כדי למזג את tsc-rs ואת tsrs לחבילה אחת שתומכת בתכונות TypeScript כולל פרוטוקול שרת השפה (Language Server Protocol) וממפי תוכן. תוכנית התחזוקה מבוססת על המודל של Vinext: בכל בוקר סוכן סוקר שינויים, מושך את ה-diffs ופותח משימות מעקב; בכל לילה מטריצת תאימות נוצרת מחדש על ידי הרצת חבילת הבדיקות Next.js מול Vinext. כאשר מופיעים פערים, סוכנים יכולים לבנות שחזור, להעביר בדיקות רלוונטיות ולהציע תיקונים.

הצוותים אומרים שישמרו שלא לסטות מה-upstream של TypeScript וינסו לתרום שיפורי ביצועים בחזרה לבסיס הקוד של TypeScript ב-Go. הם מכירים בהבדלים הקיימים, כמו הסדר שבו מודפסות הודעות האבחון, ושואפים להפחית אותם לפני שחרור יציב. Cloudflare גם אומרת שצוות Oxc מבצע רפקטורינג למהירות, שימוש בזיכרון ותחזוקתיות, ושאינטגרציות עמוקות יותר של tsrs עשויות לכלול כללי lint מודעי טיפוסים ב-Oxlint.

מקורות: Cloudflare · The New Stack

SiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.