Menu
CoddyTech

Playground Zero

Viết, chạy và chia sẻ đoạn code. Không cần thiết lập.

Coddymain.0
Output
Click Run to see the output here.

Thử Zero ngay trên trình duyệt

Zero là ngôn ngữ lập trình hệ thống mới của Vercel Labs, phát hành lần đầu vào tháng 5 năm 2026. Nhìn bề ngoài, nó mang dáng dấp Rust (pub fun, let mut, ->, ngoặc generic), nhưng mục tiêu thiết kế lại khác thường: mọi phần của toolchain đều được làm ra để AI agent đọc, sửa và khắc phục dễ dàng như con người. Thông tin chẩn đoán được xuất dưới dạng JSON có cấu trúc với mã lỗi ổn định, trình biên dịch có thể xuất kế hoạch sửa lỗi có kiểu, và tệp thực thi chỉ dưới 10 KiB. Playground cho bạn một trình soạn thảo gọn gàng để mày mò ngôn ngữ mà không cần cài gì.

Ý tưởng đặc trưng nhất của Zero là I/O dựa trên capability. Không có biến toàn cục ngầm định, không có stdout dùng chung sẵn: một hàm muốn ghi ra terminal phải nhận một tham số World và gọi world.out.write(...). Lỗi được truyền đi bằng raises và check thay vì ngoại lệ hay panic, còn giá trị optional dùng .has / .value thay vì null. Nhấn Chạy, trình soạn thảo sẽ biên dịch mã nguồn trên máy chủ và hiện đầu ra. Stdin chưa được hỗ trợ vì Zero v0.1.3 chưa có API stdin: hãy dùng std.args qua bảng Đối số.

Điều gì làm Zero thú vị

  • I/O dựa trên capability: mọi tác dụng phụ (stdout, tệp, mạng) đều đi qua một tham số World, nên chữ ký của hàm cho bạn biết nó được phép đụng đến những gì. Không có biến toàn cục ẩn, không có bộ cấp phát ngầm định, không có async bất ngờ.
  • Toolchain ưu tiên agent: zero xuất thông tin chẩn đoán JSON ổn định, zero fix --plan --json tạo kế hoạch sửa lỗi có kiểu, và mọi lệnh con của CLI đều nhận --json để agent có thể chuyển đầu ra qua lại thay vì phải phân tích bằng regex.
  • Tệp thực thi native siêu nhỏ, thường dưới 10 KiB. Trình biên dịch dùng bộ sinh mã trực tiếp cho ELF, Mach-O, PE và WebAssembly, nên không phải kéo theo LLVM.
  • Cú pháp quen thuộc, an toàn chặt chẽ hơn: nhìn giống Rust, nhưng không panic khi gặp null, không có GC ngầm định và không có luồng điều khiển ẩn. Lỗi chỉ là giá trị mà bạn truyền đi bằng check.

Những điều nên thử trong playground Zero

  • In một thứ gì đó qua world.out.write và xem chú thích raises buộc bạn xử lý nhánh lỗi bằng check ra sao. Đó là toàn bộ cách Zero đảm bảo an toàn mà không cần ngoại lệ, gói gọn trong một ví dụ nhỏ.
  • Đọc một đối số dòng lệnh bằng std.args.get(N) và mở giá trị optional bằng .has / .value. Sửa giá trị trong bảng Đối số bên dưới trình soạn thảo: chúng được truyền vào chương trình khi bạn chạy, y như argv thật.
  • Viết một fun nhỏ trả về String, gọi nó từ main và xem các kiểu được truyền qua thế nào. Zero suy luận generic mạnh tay hơn Rust, nên phần lớn chỗ gọi hàm không cần chú thích kiểu nào cả.

Câu hỏi thường gặp về Zero

Ngôn ngữ lập trình Zero là gì?
Zero là ngôn ngữ hệ thống thử nghiệm của Vercel Labs, phát hành lần đầu vào tháng 5 năm 2026. Nó biên dịch ra tệp thực thi native nhỏ (thường dưới 10 KiB) và được xây dựng với AI coding agent trong đầu: trình biên dịch xuất thông tin chẩn đoán JSON có cấu trúc, mọi lệnh con của CLI đều nhận --json, và chế độ riêng zero fix --plan tạo kế hoạch sửa lỗi có kiểu mà agent có thể áp dụng trực tiếp. Về cú pháp, nó nằm đâu đó giữa Rust và Zig. Ý tưởng nổi bật nhất là I/O dựa trên capability qua tham số World.
Tôi có cần cài trình biên dịch Zero để dùng playground này không?
Không. Coddy chạy toolchain zero trên máy chủ trong một container cách ly, nên bạn viết code trên trình duyệt và nhấn Chạy. Phiên bản trình biên dịch được cố định (hiện là v0.1.3) và sandbox giống nhau cho mọi lần chạy. Nếu muốn phát triển trên máy, dự án Zero có phát hành sẵn bản build trên trang releases ở GitHub.
Sao playground Zero không có ô nhập stdin?
Vì Zero v0.1.3 chưa cung cấp API stdin. Ngôn ngữ này chỉ giao tiếp với bên ngoài qua các capability trên tham số World (world.out, world.err), cùng std.args cho đối số dòng lệnh và std.env cho biến môi trường. Cho đến khi Vercel Labs phát hành capability stdin, hãy dùng bảng Đối số bên dưới trình soạn thảo: đó là cách đưa đầu vào cho chương trình.
Capability World là gì và tại sao main lại nhận nó?
Zero không có không gian tên toàn cục ngầm định cho I/O. Một hàm muốn ghi đầu ra, đọc tệp hay gọi mạng phải nhận một giá trị World và gọi phương thức trên đó (world.out.write, world.err.write...). Nhờ vậy chữ ký hàm trở thành lời khai báo trung thực về tác dụng phụ: nếu một hàm không nhận World, chắc chắn nó không thể đụng đến thế giới bên ngoài. main nhận nó vì chính runtime là nơi cấp capability ban đầu.
raises và check nghĩa là gì?
Zero xử lý lỗi một cách tường minh thay vì dùng ngoại lệ. Một hàm có thể thất bại sẽ ghi raises trong chữ ký (có thể liệt kê tên các lỗi cụ thể), và nơi gọi viết check expr để truyền lỗi lên trên stack. Hãy hình dung nó như toán tử ? của Rust với kiểu lỗi có tên: lỗi là giá trị, không phải bất ngờ trong luồng điều khiển.

Công cụ hữu ích cho Zero

Các công cụ miễn phí chạy trên trình duyệt, dùng tốt cùng Playground Zero, tất cả đều thuộc Coddy.