Deno 2.9, một nền tảng được thiết kế để thực thi độc lập các ứng dụng phía máy chủ và ứng dụng máy tính để bàn được viết bằng JavaScript và TypeScript sử dụng công cụ V8, được dùng trong các trình duyệt dựa trên Chromium, đã được phát hành. Dự án này đang được phát triển bởi Ryan Dahl, người tạo ra Node.js, với mục tiêu cung cấp một môi trường an toàn hơn và loại bỏ các lỗi khái niệm trong kiến trúc Node.js. Để cải thiện bảo mật, khung V8 được viết bằng Rust và nền tảng Tokio được sử dụng để xử lý yêu cầu không chặn. Mã nguồn dự án được phân phối theo giấy phép MIT. Các bản dựng đang được chuẩn bị cho Linux, Windows и macOS.
Phiên bản mới này đáng chú ý nhờ việc tích hợp bộ công cụ thử nghiệm Deno Desktop, cho phép tạo ra các ứng dụng GUI tùy chỉnh được xây dựng bằng công nghệ web, tương tự như nền tảng Electron. Logic và giao diện ứng dụng được định nghĩa bằng JavaScript hoặc TypeScript sử dụng các framework web tiêu chuẩn, và ứng dụng được thực thi bằng công cụ dựa trên trình duyệt. Ứng dụng được cung cấp dưới dạng tệp thực thi độc lập và cung cấp giao diện người dùng tương tự như các chương trình GUI cổ điển.
Deno Desktop cung cấp hai hệ thống phụ trợ để chạy trên hai công cụ trình duyệt: WebView của hệ điều hành và CEF (Chromium Embedded Framework) được tích hợp sẵn trong ứng dụng. Hệ thống phụ trợ dựa trên WebView cho phép kích thước tệp thực thi nhỏ hơn bằng cách chạy trên công cụ trình duyệt WebView2 của hệ thống. Windows và WebKit trong macOS и Linuxvà hệ thống phụ trợ CEF cho phép đạt được khả năng hiển thị giao diện nhất quán trên các nền tảng khác nhau. Linux, macOS и Windowsnhưng điều này dẫn đến việc kích thước của các tập tin thực thi tăng lên đáng kể.
Kích thước tệp thực thi của ứng dụng thử nghiệm được ước tính là 40 MB khi sử dụng WebView và 150 MB khi sử dụng CEF. Để so sánh, con số này là 100 MB đối với Electron, 61 MB đối với Electrobun và 2-10 MB đối với Tauri (Electron sử dụng CEF nhúng, trong khi Electrobun và Tauri sử dụng WebView của hệ thống). Một cơ chế để chia sẻ công cụ CEF chung giữa các ứng dụng đang được phát triển, điều này sẽ giúp giảm kích thước của các tệp thực thi.
Deno Desktop hoàn toàn tương thích với Node.js, hệ sinh thái NPM và các framework web như Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start và Vite SSR. API được cung cấp để truy cập các API gốc của hệ điều hành. Ví dụ, bạn có thể điều khiển kích thước, vị trí và khả năng hiển thị của cửa sổ, tạo menu, gắn trình xử lý tùy chỉnh, đặt biểu tượng cho khay hệ thống và bảng điều khiển, và hiển thị các hộp thoại gốc của hệ điều hành. Các ứng dụng web có thể được xây dựng thành chương trình máy tính để bàn mà không cần thay đổi mã nguồn, và các framework web được sử dụng có thể được tự động phát hiện và biên dịch chéo trên cùng một hệ thống. Linux x64/arm64, Windows x64 và macOS x64/arm64. Dành cho Linux Các gói phần mềm có thể được tạo ở định dạng AppImage, deb và rpm.
Không giống như Electron, Electrobun và Tauri, Deno Desktop không sử dụng mô hình thực thi đa tiến trình với giao tiếp liên tiến trình dựa trên socket. Thay vào đó, nó sử dụng mô hình đa luồng cho CEF hoặc mô hình dựa trên nhóm tiến trình cho WebView, với sự giao tiếp giữa mã phụ trợ và mã giao diện người dùng thông qua các kênh nội bộ tiến trình. Nó có cơ chế kiểm tra cập nhật tích hợp và cài đặt tự động, để tiết kiệm băng thông, chỉ tải xuống dữ liệu đã thay đổi so với phiên bản trước (sử dụng các bản vá nhị phân dựa trên bsdiff) và hỗ trợ khôi phục về phiên bản trước trong trường hợp xảy ra lỗi khi khởi chạy phiên bản mới.
Các tính năng mới khác trong Deno 2.9 bao gồm:
- Hỗ trợ đọc trực tiếp các tệp khóa trong lệnh "deno install" để đơn giản hóa quá trình chuyển đổi sang Deno từ npm, pnpm, yarn và Bun.
- Hỗ trợ nhập các mô-đun CSS.
- Thực hiện việc tương thích với nền tảng Node.js 26.
- Các lệnh mới "deno link", "deno unlink" và "deno list".
- Hỗ trợ API Web Locks để thiết lập khóa trên các tài nguyên.
- Hãy bật chế độ trì hoãn mặc định 24 giờ (min-release-age=24h) trước khi cài đặt các phiên bản mới của các thư viện phụ thuộc để bảo vệ chống lại các cuộc tấn công xâm phạm thư viện phụ thuộc.
- Giảm thời gian khởi động (~2 lần), giảm mức tiêu thụ bộ nhớ (~2.2 lần) và tăng thông lượng khi làm việc với HTTP (~1.2 lần).

Nguồn: opennet.ru

