זמן בדיקת הטיפוסים הוא הרגע שבו הולכים להכין קפה. כשהפרויקט גדל לעשרות אלפי שורות קוד, הקומפיילר הרשמי של TypeScript מתחיל לזחול ב-CI ועל המחשב האישי, וכל שמירה הופכת למבחן סבלנות. עכשיו שיתוף פעולה בין Cloudflare, חברת VoidZero ומקס שוונק מ-Owner.com מנסה לפתור את צוואר הבקבוק עם tsrs, שכתוב של המהדר לשפת Rust.
הקפה יישאר חם, אבל לפני שאתם מוחקים את הקונפיגורציה הישנה, כדאי להבין מה באמת עובד שם ומה עדיין ניסיוני.
בלי לפצל את השפה
הפרויקט החדש מתפתח כחלק מיוזמת Oxc, מערך כלי קומפילציה לקוד JavaScript שנכתב ב-Rust. בניגוד לניסיונות עצמאיים אחרים שנטו לשנות תחביר או לקצר פינות, המפתחים מבהירים שהם לא מבצעים Fork של השפה. העבודה נעשית בתיאום מול הצוות המקורי של מיקרוסופט, במטרה לשמור על תאימות מלאה לחוקי השפה הרשמיים.
אנחנו לא מפצלים את TypeScript. אנחנו מאמינים שצוות TypeScript צריך להישאר בשליטה מלאה על העיצוב והכיוון של השפה.ההכרזה הרשמית בבלוג של Cloudflare
לפי החברות, הגורם שאפשר שכתוב כזה בזמן קצר הוא שימוש במודלי AI להמרת קוד מקור בהיקפים רחבים. תרגום ישיר אינו מספיק, והצוות משקיע מאמץ בארגון מחדש של הקוד כדי שיתאים לארכיטקטורת הזיכרון של Rust.
האינטרס האמיתי בקצה הרשת
בעבר הצוות הרשמי של מיקרוסופט שכתב את המהדר מג'אווהסקריפט לשפת Go והשיג האצה של פי עשרה. המעבר המחודש ל-Rust נובע מיתרונות ספציפיים בסביבת WebAssembly. כשמריצים קוד Go שקומפל ל-Wasm, חייבים לגרור איתו את מנגנון איסוף הזבל של השפה, מה שמנפח את צריכת המשאבים. ב-Rust ניהול הזיכרון ידני ומובנה ברמת השפה.
זה בדיוק מה שקלאודפלייר צריכה עבור תשתית Workers. חיסכון בזיכרון מאפשר להריץ סביבות פיתוח, סוכני AI ושרתי שפה ישירות בדפדפן או בקצה הרשת של הלקוח. הרצת הכלים שלכם על שרתי החברה בישראל או היישר בטאב הפתוח של הלקוח היא המטרה האמיתית, לא רק האצת הטרמינל הפרטי שלכם.
המהירות חשובה, אבל גודל הזיכרון מכתיב את הגבולות.
ההבדל בזיכרון, לא רק במהירות
בבדיקות הביצועים הרשמיות שפורסמו עבור tsrs נרשמה בדיקת טיפוסים מהירה עד פי 8 וחיסכון של כ-70% בצריכת הזיכרון בהשוואה לגרסת TypeScript 7.0. ההשוואות נערכו תחת אותה כמות תהליכי בדיקה (workers). במקביל, גרסת 7.1 beta הרשמית מציגה שיפור של עד פי 2.5 במהירות מול גרסה 7.0, בין השאר בזכות אופטימיזציות שהועברו בחזרה ממיזם tsrs לפרויקט המקורי.
הכלי כולל קונפיגורציה דינמית שמזהה את חומרת המחשב. במכונות פיתוח עם זיכרון רחב, tsrs צורך יותר זיכרון במודע כדי לדחוף את הביצועים למעלה.
| מדד | TypeScript הרשמי (tsc) | tsrs ב-Rust |
|---|---|---|
| שפת המימוש | Go ו-JavaScript | Rust |
| האצת בדיקת טיפוסים | בסיס קיים (עד פי 2.5 בגרסה 7.1) | עד פי 8 מול גרסה 7.0 |
| צריכת זיכרון | גבוהה (איסוף זבל מובנה) | חיסכון של כ-70% |
| סטטוס יציבות | יציב ונתמך בייצור | שחרור ניסיוני |
| תמיכת פרוטוקול LSP | מלאה ורשמית | בעבודה דרך איחוד עם tsc-rs |
סדר השגיאות עדיין הפוך
למרות הבטחות המהירות, tsrs עדיין רחוק מלהיות מוכן להחלפה מלאה של tsc בפרויקט החברה שלכם. בדוקומנטציה מצוין בפירוש שסדר הפליטה של שגיאות הקומפילציה והדיאגנוסטיקה אינו זהה למקור. אם ה-CI שלכם תלוי בפענוח פלטים אחיד, הבדיקות שלכם עלולות להישבר.
בנוסף, שכבת שרת השפה (LSP) עדיין בפיתוח. הצוות פועל לאיחוד עם פרויקט tsc-rs של תיאו בראון כדי לספק מענה מלא בעורכי קוד. כדי לעקוב אחרי שינויים שמיקרוסופט מכניסה לשפה, הם מפעילים סוכני בדיקה יומיים שמריצים השוואות מול בדיקות המקור, בדומה למודל התחזוקה של פרויקט Vinext. זה פתרון מעניין, אבל הוא ידרוש הוכחה לאורך זמן.
איך לבדוק בלי להסתכן
אם יש לכם פרויקט גדול והסקרנות גוברת, אין סיבה שלא תבצעו ריצה מקומית. החבילה פתוחה בחינם לכל מפתח, וזמינה כעת ב-npm. לא הייתי ממהר לשנות את פקודות הבנייה בשרתי הפיתוח, אבל הרצה בטרמינל האישי תיתן לכם מושג מדויק על הפוטנציאל.
אפשר להריץ את הכלי ישירות באמצעות הפקודה npx tsrs מבלי להסיר את המהדר הרשמי. תשוו את זמני הריצה, תבדקו אם הוא זיהה את כל הטיפוסים כמו שצריך, ותשאירו את ה-CI הקיים בדיוק כמו שהוא. בינתיים, המהדר הוותיק של מיקרוסופט עדיין מחזיק במפתחות.
מקורות
- Introducing tsrs: a Port of TypeScript to Rusthttps://blog.cloudflare.com/typescript-rust-port/
- Posts tagged "Developer Platform" — Cloudflare Bloghttps://blog.cloudflare.com/tag/developer-platform
- Posts tagged "Developers" — Cloudflare Bloghttps://blog.cloudflare.com/tag/developers
- `tsrs`https://npmx.dev/package/tsrs
- tsc-rshttps://github.com/pingdotgg/ts-rust
- Cloudflarehttps://weba.co.il/tools/cloudflare/
- TypeScripthttps://weba.co.il/glossary/typescript/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.