Link to original video by Microsoft Developer

A 10x faster TypeScript

Outline Video A 10x faster TypeScript

Tóm tắt ngắn:

Tóm tắt chi tiết:

Phần 1: Giới thiệu vấn đề và động lực: Anders Hejlsberg, kiến trúc sư trưởng của dự án TypeScript, giới thiệu dự án Corsa nhằm giải quyết vấn đề hiệu năng của trình biên dịch TypeScript viết bằng JavaScript. Ông chỉ ra những hạn chế của JavaScript như chi phí khởi tạo (JIT compilation), mô hình đối tượng linh hoạt nhưng tốn kém, thiếu khả năng song song chia sẻ bộ nhớ. Ông minh họa bằng việc biên dịch dự án Visual Studio Code (1.5 triệu dòng code) mất khoảng 1 phút với trình biên dịch hiện tại.

Phần 2: Lựa chọn ngôn ngữ và tiến độ dự án: Sau 6 tháng đánh giá, nhóm chọn Go vì khả năng tạo mã gốc tối ưu trên mọi nền tảng, kiểm soát bố cục dữ liệu, quản lý bộ nhớ tự động và hỗ trợ song song tốt. Hiện tại, hơn 100.000 dòng code đã được chuyển đổi, bao gồm bộ phân tích cú pháp (scanner, parser), bộ liên kết (binder), và khoảng 80% bộ kiểm tra kiểu dữ liệu (type checker).

Phần 3: Minh họa hiệu năng: Ông trình diễn sự khác biệt về thời gian biên dịch dự án Visual Studio Code: 1 phút với trình biên dịch cũ và 5.5 giây với trình biên dịch mới (Go). Ông cũng so sánh mã nguồn của một hàm trong cả hai phiên bản (TypeScript và Go), nhấn mạnh việc giữ nguyên ngữ nghĩa trong quá trình chuyển đổi. Việc kiểm tra lỗi cũng được thực hiện trên cả hai phiên bản, cho thấy kết quả giống nhau.

Phần 4: Dịch vụ ngôn ngữ (Language Service): Ông giới thiệu phiên bản Go của dịch vụ ngôn ngữ, hoạt động nhanh hơn đáng kể (5 lần) so với phiên bản cũ. Việc khởi động lại và phân tích 4500 file của dự án Visual Studio Code chỉ mất khoảng 3 giây. Ông cũng đề cập đến việc chuyển sang kiến trúc LSP (Language Server Protocol) và tích hợp các khả năng hỗ trợ AI trong tương lai.

Phần 5: Phân tích hiệu năng chi tiết: Ông giải thích rằng việc tăng tốc 10 lần đến từ hai yếu tố: chuyển sang mã gốc (khoảng 50%) và sử dụng song song (khoảng 50%). Ông minh họa bằng việc biên dịch trình biên dịch TypeScript cũ (250.000 dòng code): 7 giây với trình biên dịch cũ, 2 giây với trình biên dịch mới ở chế độ đơn luồng, và dưới 1 giây ở chế độ song song. Ông giải thích cách tiếp cận song song trong các giai đoạn khác nhau của quá trình biên dịch.

Phần 6: Tương lai và lời kêu gọi: Ông thông báo về việc công khai kho mã nguồn trên GitHub, kế hoạch hoàn thiện trình biên dịch (hỗ trợ JSDoc, JSX, project references…) và dịch vụ ngôn ngữ trong năm nay, cũng như tiềm năng tích hợp AI vào trình biên dịch. Ông kêu gọi cộng đồng thử nghiệm và báo cáo lỗi.

Câu nói đáng chú ý: "We're talking more than 10x faster here," "This is a plug-and-play replacement for our old compiler."