Tác giả của Node.js đã giới thiệu nền tảng JavaScript bảo mật Deno 1.0

Sau hai năm phát triển trình bày bản phát hành lớn đầu tiên Cho tôi 1.0, một nền tảng để thực thi các ứng dụng độc lập bằng JavaScript và TypeScript, có thể được sử dụng để tạo các trình xử lý chạy trên máy chủ. Nền tảng này được phát triển bởi Ryan Dahl (Ryan Dahl), người tạo ra Node.js. Giống như Node.js, Deno sử dụng công cụ JavaScript V8, cũng được sử dụng trong các trình duyệt dựa trên Chrome. Đồng thời, Deno không phải là một nhánh của Node.js mà là một dự án mới được tạo từ đầu. Mã số dự án phân phối bởi theo giấy phép MIT. hội đồng chuẩn bị dành cho Linux, Windows và macOS.

Số phiên bản quan trọng có liên quan đến sự ổn định của các API trong không gian tên Deno, chịu trách nhiệm tương tác giữa các ứng dụng với HĐH. Giao diện phần mềm cho đến nay không ổn định, được ẩn theo mặc định và chỉ khả dụng khi chạy ở chế độ “--không ổn định”. Khi các phiên bản mới được hình thành, các API như vậy sẽ dần dần ổn định. API trong không gian tên chung, bao gồm các chức năng phổ biến như setTimeout() và tìm nạp(), gần nhất có thể với API của các trình duyệt web thông thường và được phát triển theo tiêu chuẩn Web dành cho trình duyệt. Các API do Rust cung cấp được sử dụng trực tiếp trong mã nền tảng cũng như giao diện phát triển plugin cho thời gian chạy Deno vẫn chưa được ổn định và tiếp tục phát triển.

Động cơ chính để tạo ra một nền tảng JavaScript mới là mong muốn loại bỏ các lỗi về khái niệm, thừa nhận trong kiến ​​trúc Node.js và cung cấp cho người dùng một môi trường an toàn hơn. Để cải thiện tính bảo mật, công cụ V8 được viết bằng Rust, giúp tránh được nhiều lỗ hổng phát sinh từ thao tác bộ nhớ cấp thấp, chẳng hạn như truy cập sau khi rảnh rỗi, hủy tham chiếu con trỏ null và lỗi tràn bộ đệm. Nền tảng được sử dụng để xử lý các yêu cầu ở chế độ không chặn Tokyo, cũng được viết bằng Rust. Tokio cho phép bạn tạo các ứng dụng hiệu suất cao dựa trên kiến ​​trúc hướng sự kiện, hỗ trợ đa luồng và xử lý các yêu cầu mạng ở chế độ không đồng bộ.

Chính tính năng Deno:

  • Cấu hình mặc định hướng đến bảo mật. Quyền truy cập tệp, kết nối mạng và quyền truy cập vào các biến môi trường bị tắt theo mặc định và phải được bật rõ ràng. Các ứng dụng theo mặc định chạy trong môi trường hộp cát biệt lập và không thể truy cập các khả năng của hệ thống nếu không cấp quyền rõ ràng;
  • Hỗ trợ tích hợp cho TypeScript ngoài JavaScript. Trình biên dịch TypeScript tiêu chuẩn được sử dụng để kiểm tra các loại và tạo JavaScript, điều này dẫn đến hiệu suất bị ảnh hưởng so với phân tích cú pháp JavaScript trong V8. Trong tương lai, chúng tôi dự định chuẩn bị triển khai hệ thống kiểm tra loại TypeScript của riêng mình, hệ thống này sẽ cải thiện hiệu suất xử lý TypeScript theo mức độ lớn;
  • Thời gian chạy có dạng một tệp thực thi độc lập (“deno”). Chạy ứng dụng bằng Deno là đủ Tải xuống đối với nền tảng của nó, có một tệp thực thi, kích thước khoảng 20 MB, không có phụ thuộc bên ngoài và không yêu cầu bất kỳ cài đặt đặc biệt nào trên hệ thống. Hơn nữa, deno không phải là một ứng dụng nguyên khối mà là một tập hợp các gói thùng trong Rust (deno_core, rỉ sét_v8), có thể được sử dụng riêng biệt;
  • Khi khởi động chương trình cũng như để tải các mô-đun, bạn có thể sử dụng địa chỉ URL. Ví dụ: để chạy chương trình Welcome.js, bạn có thể sử dụng lệnh “deno https://deno.land/std/examples/welcome.js”. Mã từ các tài nguyên bên ngoài được tải xuống và lưu vào bộ nhớ đệm trên hệ thống cục bộ, nhưng không bao giờ được cập nhật tự động (việc cập nhật yêu cầu chạy ứng dụng một cách rõ ràng với cờ “--reload”);
  • Xử lý hiệu quả các yêu cầu mạng thông qua HTTP trong các ứng dụng; nền tảng được thiết kế để tạo các ứng dụng mạng hiệu suất cao;
  • Khả năng tạo các ứng dụng web phổ quát có thể được thực thi cả trong Deno và trình duyệt web thông thường;
  • tính sẵn sàng bộ mô-đun tiêu chuẩn, việc sử dụng nó không yêu cầu ràng buộc với các phụ thuộc bên ngoài. Các mô-đun từ bộ sưu tập tiêu chuẩn đã trải qua quá trình kiểm tra bổ sung và kiểm tra khả năng tương thích;
  • Ngoài thời gian chạy, nền tảng Deno còn hoạt động như một trình quản lý gói và cho phép bạn truy cập các mô-đun bằng URL bên trong mã. Ví dụ: để tải một mô-đun, bạn có thể chỉ định trong mã “nhập * dưới dạng nhật ký từ”https://deno.land/std/log/mod.ts”. Các tệp được tải xuống từ máy chủ bên ngoài qua URL sẽ được lưu vào bộ nhớ đệm. Việc liên kết với các phiên bản mô-đun được xác định bằng cách chỉ định số phiên bản bên trong URL, ví dụ: “https://unpkg.com/[email được bảo vệ]/dist/liltest.js";
  • Cấu trúc bao gồm một hệ thống kiểm tra phụ thuộc tích hợp (lệnh “deno info”) và tiện ích định dạng mã (deno fmt);
  • Tất cả các tập lệnh ứng dụng có thể được kết hợp thành một tệp JavaScript.

Sự khác biệt so với Node.js:

  • Deno không sử dụng trình quản lý gói npm
    và không bị ràng buộc với các kho lưu trữ, các mô-đun được xử lý qua URL hoặc bằng đường dẫn tệp và bản thân các mô-đun có thể được đặt trên bất kỳ trang web nào;
  • Deno không sử dụng "package.json" để xác định mô-đun;
  • Sự khác biệt về API, tất cả các hành động không đồng bộ trong Deno đều trả về một lời hứa;
  • Deno yêu cầu định nghĩa rõ ràng về tất cả các quyền cần thiết đối với các biến tệp, mạng và môi trường;
  • Tất cả các lỗi không được cung cấp bởi trình xử lý đều dẫn đến việc chấm dứt ứng dụng;
  • Deno sử dụng hệ thống mô-đun ECMAScript và không hỗ trợ require();
  • Máy chủ HTTP tích hợp của Deno được viết bằng TypeScript và chạy trên các socket TCP gốc, trong khi máy chủ HTTP Node.js được viết bằng C và cung cấp các liên kết cho JavaScript. Các nhà phát triển của Deno đã tập trung vào việc tối ưu hóa toàn bộ lớp ổ cắm TCP và cung cấp giao diện tổng quát hơn. Máy chủ HTTP Deno cung cấp thông lượng thấp hơn nhưng đảm bảo độ trễ thấp có thể dự đoán được. Ví dụ: trong thử nghiệm, một ứng dụng đơn giản dựa trên máy chủ Deno HTTP có thể xử lý 25 nghìn yêu cầu mỗi giây với độ trễ tối đa là 1.3 mili giây. Trong Node.js, một ứng dụng tương tự đã xử lý 34 nghìn yêu cầu mỗi giây, nhưng độ trễ dao động từ 2 đến 300 mili giây.
  • Deno không tương thích với các gói dành cho Node.js (NPM), nhưng đang được phát triển riêng lớp xen kẽ để tương thích với thư viện Node.js tiêu chuẩn, khi nó phát triển, ngày càng có nhiều ứng dụng được viết cho Node.js có thể chạy trong Deno.
  • Nguồn: opennet.ru

Thêm một lời nhận xét