Next.js حالا Route Handler به زبان Go رو آزمایشی پشتیبانی میکنه
خلاصهٔ کاملتر
توی یه PR که Tim Neutkens از تیم Turbopack نوشته و توی شاخه canary ادغام شده، Next.js قابلیت آزمایشی route.go رو گرفته. یعنی میتونید Route Handlerهای App Router (همون فایلهایی که API endpoint میسازن) رو با زبان Go بنویسید. برای فعال کردنش باید experimental.goRoutes: true رو بذارید و از Turbopack استفاده کنید.
شکل کار سادهست: یه فایل Go با package main مینویسید و برای هر متد HTTP یه تابع تعریف میکنید، مثلاً func GET(w http.ResponseWriter, r *http.Request) یا POST. Next.js خودش کد dispatch رو تولید میکنه، رفتار HEAD و OPTIONS رو خودکار اضافه میکنه و اجازه میده خود Go امضای تابعها رو چک کنه.
کارهای سنگینتر، یعنی پیدا کردن فایلهای Go، کامپایل، کش دائمی و مدیریت کامپایلر، توی یه پکیج جدا به اسم turbopack-go انجام میشه که تو PR قبلی (#99980) اضافه شده بود. این PR فقط قراردادهای مسیریابی Next.js و اتصال به runtime رو اضافه میکنه.
توی حالت development و همینطور next start، مسیریابی، rewriteها و proxy.ts همچنان توی Node.js میمونن. درخواستها به workerهای خصوصی Go فرستاده میشن که یه ناظر حواسش بهشونه. به گفته PR، streaming، هدرها، کوکیها، پارامترها و لغو درخواست درست کار میکنن و بعد از ویرایش کد یا کرش شدن پروسه، worker دوباره بالا میاد. توی production هم اگه worker موقع شروع به خطای موقت بخوره، دوباره امتحان میشه.
برای deploy، adapterها همون خروجی معمول APP_ROUTE رو میگیرن، فقط با runtime: 'go' و یه فایل اجرایی. سرورهایی که بر اساس PORT کپی میشن بدون Next.js و بدون ابزار Go اجرا میشن. یعنی خروجی نهایی Go رو میشه جدا از Node.js بالا آورد. طبق گزارش PR، ۱۸ تست development و ۱۵ تست production (شامل خروجی برای amd64 و arm64) پاس شدن.
نکات کلیدی:
- قابلیت با experimental.goRoutes: true و فقط روی Turbopack فعال میشه
- هر متد HTTP یه تابع Go با امضای func GET(w http.ResponseWriter, r *http.Request) هست و HEAD/OPTIONS خودکار ساخته میشن
- کامپایل و کش کد Go توی پکیج turbopack-go انجام میشه
- توی dev و next start، مسیریابی و proxy.ts روی Node.js میمونن و درخواستها به workerهای Go فرستاده میشن
- adapterها خروجی APP_ROUTE با runtime: 'go' میگیرن که بدون Node.js قابل اجراست
- ۱۸ تست dev و ۱۵ تست production پاس شدن و PR با ۱۲۵ check موفق ادغام شده




