- Trình biên dịch Haskell GHC giờ đây có thể chạy hoàn toàn phía client ngay trong trình duyệt
- Thông qua bản demo Haskell Playground được cung cấp, người dùng có thể chạy mã trong trình duyệt mà không cần cài đặt riêng
- Tính năng này được giới thiệu như một ví dụ cho thấy sự phát triển của backend WebAssembly (WasM) của GHC
- Trên trình duyệt Brave, trang sẽ tải sau một khoảng dừng ngắn, và nếu việc tạo web worker thất bại thì mã sẽ được chạy trên luồng chính
- Trên trình duyệt Safari, cùng một cảnh báo xuất hiện nhưng nút Run vẫn bị vô hiệu hóa
Demo GHC chạy trong trình duyệt
- GHC chạy phía client trong trình duyệt, có thể biên dịch và thực thi mã Haskell mà không phụ thuộc vào máy chủ
- Tác giả đã công bố điều này dưới dạng bản demo Haskell Playground
- Phần giải thích chi tiết sẽ được cung cấp riêng sau
- Bản trình diễn này được nhắc đến như một ví dụ cho thấy mức độ phát triển của backend WebAssembly của GHC
Báo cáo hoạt động theo từng trình duyệt
- Trên trình duyệt Brave, ban đầu sẽ không phản hồi trong vài giây rồi mới tải xong
- Hiển thị thông báo “không thể tạo web worker”, và thay vào đó thực thi mã trên luồng chính
- Điều này có thể gây ra hiện tượng treo giao diện
- Trên trình duyệt Safari cũng xuất hiện cùng thông báo đó, nhưng nút Run bị vô hiệu hóa nên không thể chạy mã
- Thông báo bao gồm cảnh báo liên quan đến Monaco Editor, đồng thời đề cập đến việc cần định nghĩa
MonacoEnvironment.getWorkerUrl hoặc getWorker
Ý nghĩa kỹ thuật
- Việc GHC chạy trực tiếp trong trình duyệt dựa trên WebAssembly là một thay đổi giúp tăng khả năng tiếp cận của môi trường phát triển Haskell
- Điểm tiến bộ cốt lõi là trình biên dịch giờ đây có thể hoạt động trong môi trường thuần client mà không cần máy chủ
- Bài gốc không bao gồm thêm chi tiết kỹ thuật hoặc so sánh hiệu năng
1 bình luận
Ý kiến Hacker News
Tiêu đề thực tế là “GHC now runs in your browser”
Nhờ QEMU-WASM, giờ lại tự hỏi còn gì là không chạy được trong trình duyệt nữa Đây không phải lời chê, tôi thực sự nghĩ những thử nghiệm như thế này rất hay vì giúp mọi người dễ dàng học ngôn ngữ mới hơn
Điều đáng tiếc là vẫn chưa có cách bootstrap hoàn toàn Haskell (hoặc các ngôn ngữ dựa trên nó) Vì vậy tôi cảm thấy khó dùng Haskell trong các bản phân phối Linux đòi hỏi độ tin cậy cao Chạy trong sandbox của trình duyệt là một giải pháp tạm thời để giảm rủi ro, nhưng nếu không thể bootstrap từ mã nguồn thì khó mà tin tưởng ngôn ngữ này
Tôi nhớ trước đây từng chạy một trình thông dịch Haskell trên HP Jornada với Jlime Linux Lúc học toán, việc nhập công thức rất tiện nên tốt hơn máy tính cầm tay rất nhiều Nó chạy từ thẻ CF nên chắc không lớn bằng GHC, nhưng tôi không nhớ tên
Thật sự rất ấn tượng. Trước đây tôi từng làm một website giáo dục toán và nghệ thuật (mathvas.com) bằng Haskell, và nếu có công cụ như thế này thì mọi thứ hẳn đã dễ hơn rất nhiều
Đúng vậy. Bạn cũng có thể xem các dự án liên quan tại haskell-miso
Để giải thích cho những ai chưa quen với Haskell, GHC là trình biên dịch chủ đạo kiêm môi trường tương tác của Haskell
Tôi tò mò không biết dự án này có dùng WasmGC hay là tự tích hợp garbage collector riêng
Tôi muốn biết sự khác biệt giữa tính năng này và các công nghệ như Blazor Wasm là gì. Có vẻ cả hai đều cho phép viết frontend mà không cần JS
Tôi đang tìm một hướng dẫn Haskell thực dụng dành cho người đã biết lập trình hàm Tôi hiểu các khái niệm monad, typeclass và HKT, nhưng vẫn không viết nổi ngay cả một ứng dụng ToDo