Tov: زبانی شبیه TypeScript که برای ایجنتهای کدنویسی ساخته شده
خلاصهٔ کاملتر
Tov یه زبان برنامهنویسی جدیده که سازندهش اونو «زبانی برای ایجنتهای کدنویسی» معرفی میکنه. ایده اینه که کد Tov درست مثل TypeScript خونده میشه، پس ایجنتها لازم نیست چیز جدیدی یاد بگیرن. خروجی کامپایل یه باینری نیتیوه، نه کدی که روی یه runtime مثل Node اجرا بشه. پروژه هنوز خیلی اولشه و نسخهش 0.0.1 ه.
نکتهٔ اصلی پیامهای خطاست. هر خطا یه کد داره (مثلاً T0831) و اگه راهحل روشن باشه، کامپایلر خودش ویرایش لازم رو پیشنهاد میده و میگه اعمالش «safe» هست یا نه. با tov check --json همین اطلاعات به شکل JSON برای ابزارها و ایجنتها برمیگرده. مثلاً اگه new URL بنویسی، Tov میگه این فراخوانی ممکنه TypeError بده و پیشنهاد میده بنویسی try new URL. یعنی ایجنت بدون حدسزدن، خطا رو خودش درست میکنه.
Tov چیزهایی از TypeScript رو که فهم برنامه رو سخت میکنن حذف کرده: any، null، == و تبدیل نوع ضمنی وجود ندارن. int و f64 دو نوع جدا هستن و سرریز عدد صحیح (integer overflow) برنامه رو متوقف میکنه. آرایهها و رکوردها value هستن، یعنی موقع انتساب کپی میشن و چیزی پشت سر ایجنت عوض نمیشه. هر فراخوانی که ممکنه شکست بخوره باید با try علامت بخوره و switch باید همهٔ حالتها رو پوشش بده.
کلاسها بهجای garbage collection با reference counting (یعنی شمردن تعداد ارجاعها به هر شیء) مدیریت میشن. اگه احتمال ارجاع حلقوی باشه، کامپایلر ازت میخواد ارجاع برگشتی رو weak یا readonly کنی یا کلاس رو cyclic class تعریف کنی. APIهای Bun و Node مثل Bun.serve، fetch و node:fs هم پشتیبانی میشن و پکیجهای npm موقع build داخل باینری بستهبندی میشن و روی JavaScriptCore (همون موتوری که Bun ازش استفاده میکنه) اجرا میشن:
import { z } from "zod"
const User = try z.object({ name: z.string(), age: z.number() })
const r = try User.safeParse({ name: "Ada", age: 36 })
console.log(r.success as bool)مقدارهایی که از JavaScript میان نوع Js دارن و موقع تبدیل (مثل as bool) بررسی میشن. طبق بنچمارکهای سازنده روی M4 Max، کامپایل یه برنامه حدود 42 میلیثانیه طول میکشه (Rust: 98). یه وبسرور روی یه هسته 242 هزار درخواست در ثانیه با 1.6 مگابایت حافظه جواب میده؛ axum در Rust به 216 هزار با 4.4 مگ و Bun به 111 هزار با 17 مگ میرسه. سازنده نقاط ضعف رو هم گفته: صدا زدن تابعهای کوچیک npm از Tov به خاطر عبور از مرز کد نیتیو به موتور JS کندتر از Bun ه و باینریهایی که npm دارن حدود 34 مگابایت میشن.
نکات کلیدی:
- نسخهٔ فعلی 0.0.1 ه و فعلاً فقط روی macOS (arm64) و Linux کار میکنه، Windows هنوز پشتیبانی نمیشه.
- tov check --json کد خطا، محل خطا و ویرایش پیشنهادی با برچسب safe رو برمیگردونه.
- any، null و == حذف شدن و هر فراخوانی خطادار باید try بگیره.
- اپهای Bun بدون تغییر اجرا میشن؛ مثلاً media server پروژهٔ Cap کامل روش پورت شده.
- باینری برنامههای ساده حدود 33 کیلوبایته، ولی با پکیج npm به خاطر موتور JavaScriptCore حدود 34 مگابایت میشه.
- Tov هنوز package manager اختصاصی نداره و پکیجها با npm یا Bun نصب میشن.
- مجوز پروژه MIT ه.




