Hành động mã
Khi đồ thị là chưa đủ, chiếc hộp Code sẽ chạy một script.
Có bảy ngôn ngữ, tất cả đều chạy trong một hộp cát WebAssembly được nhúng sẵn: không cần trình thông dịch nào trên máy của bạn, và script cũng không truy cập được hệ thống tệp của bạn.
| Ngôn ngữ | Cỗ máy |
|---|---|
| TypeScript | QuickJS (kiểu bị gỡ bỏ lúc biên dịch) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython biên dịch sang WebAssembly) |
| Lua | Lua 5.4 trên WebAssembly |
| Ruby | CRuby trên WebAssembly |
| R | WebR |
| C# | .NET trên WebAssembly với Roslyn |
Ngôn ngữ mặc định là TypeScript.
Hợp đồng chung
Section titled “Hợp đồng chung”Bất kể ngôn ngữ nào, chiếc hộp cũng phơi ra đúng những thứ sau:
| Đầu vào | value (có tên là input), code (chuỗi) |
| Đầu ra | result |
| Cấu hình | language, code, timeout, packages |
input— giá trị nhận được trên cổng vào.vars— các biến của lần chạy.- Đầu ra chuẩn của ngôn ngữ (
console.log,print,puts,cat,Console.WriteLine) sẽ cấp dữ liệu cho nhật ký của lần chạy. - Giá trị trả về đi ra cổng
result. Một lỗi hoặc một lần quá thời hạn sẽ đi ra cổngerror.
Thời gian chờ
Section titled “Thời gian chờ”timeout, tính bằng giây: mặc định 5, tối đa 60. Một script vượt quá
mức đó sẽ bị ngắt và luồng chạy đi ra cổng error.
Các gói bên ngoài
Section titled “Các gói bên ngoài”Trường packages nhận một danh sách gồm { nom, version }. Các phiên bản chính
xác đóng vai trò khóa của bộ nhớ đệm: các phụ thuộc được giải quyết ở lần chạy
đầu tiên, được lưu đệm, rồi được gắn vào ngoại tuyến ở mỗi lần chạy sau —
kể cả trong CI.
| Ngôn ngữ | Nguồn |
|---|---|
| TypeScript / JavaScript | npm (toàn bộ được đóng gói sẵn) |
| Python | Các wheel thuần Python từ PyPI |
| Lua | LuaRocks (mã nguồn thuần Lua) |
| Ruby | Các gem thuần Ruby |
| R | CRAN, qua kho WebAssembly của WebR |
| C# | Không có — chỉ thư viện chuẩn của .NET |
Khi nào không nên viết mã
Section titled “Khi nào không nên viết mã”Rất nhiều nhu cầu đã được các chiếc hộp đáp ứng, vừa dễ đọc hơn vừa nhanh hơn:
| Nhu cầu | Hộp |
|---|---|
| Trích một giá trị từ một phản hồi | Một bộ chọn của liên kết |
| Định dạng một chuỗi | Transform template |
| Lọc, sắp xếp, tổng hợp một danh sách | Danh sách |
| Băm, mã hóa, ký | Mã hóa |
| Kiểm tra một cấu trúc | Schema validate |
Hãy để dành chiếc hộp Code cho phần logic thực sự đặc thù.