2 điểm bởi GN⁺ 2023-07-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • Uxn/Varvara là một stack điện toán cá nhân xoay quanh máy ảo nhỏ, cho phép chạy cùng một ứng dụng trên nhiều hệ thống
  • Dù khởi đầu từ nhu cầu cụ thể là host các ứng dụng đồ họa, nó được công khai để bất kỳ ai cũng có thể chọn làm đích phát hành
  • Chương trình được viết bằng ngôn ngữ riêng là Uxntal, và cách phân phối tương tự việc chia sẻ ROM game của các trình giả lập console cổ điển
  • Để chạy cần có trình giả lập theo từng hệ điều hành; cũng có thể tự triển khai trình giả lập dựa trên đặc tả VM và I/O
  • Với cấu trúc chạy cùng một ROM trên desktop, thiết bị điện tử nhỏ, máy cầm tay và trình duyệt, các phần mềm nhỏ dễ được duy trì lâu dài và chuyển sang nhiều môi trường

Stack điện toán mà Uxn/Varvara hướng tới

  • Hệ sinh thái Uxn/Varvara là một stack điện toán cá nhân xoay quanh máy ảo nhỏ
  • Mục tiêu cốt lõi là cho phép cùng một ứng dụng chạy trên nhiều hệ thống
  • Thiết kế dựa trên tư duy ưu tiên triển khai, và được điều chỉnh cho nhu cầu cụ thể là host ứng dụng đồ họa
  • Uxn được lập trình bằng ngôn ngữ riêng là Uxntal
  • Việc phân phối chương trình Uxn tương tự cách chia sẻ ROM game cho các trình giả lập console cổ điển
  • Có thể xem thêm bối cảnh thiết kế chi tiết trong ghi chú uxn design

Trình giả lập và chạy ROM

  • Để chạy chương trình Uxn, cần có trình giả lập phù hợp với hệ thống
  • Cũng có thể tự triển khai trình giả lập bằng cách tham khảo đặc tả VM và I/O
  • Trình giả lập đa nền tảng cho desktop cần SDL2
    • Arch: sudo pacman -S sdl2
    • Ubuntu: sudo apt install libsdl2-dev
    • Void Linux: sudo xbps-install SDL2-devel
    • OSX: brew install sdl2
    • openBSD: doas pkg_add sdl2
  • Có nhiều cách để chạy ROM
    • Dùng chương trình launcher
    • Kéo thả file .rom vào cửa sổ trình giả lập
    • Chạy bin/uxnemu path/to/example.rom trong terminal
  • Thao tác cơ bản với trình giả lập được thực hiện bằng phím chức năng và ánh xạ nút
    • F1: bật/tắt phóng to/thu nhỏ
    • F2: bật/tắt debugger
    • F3: chụp màn hình
    • F4: tải launcher.rom
    • L-Ctrl: A, L-Alt: B, L-Shift: Select, Home: Start

Môi trường có thể chạy và chương trình ví dụ

  • Cùng một ROM Uxn có thể dùng trên máy tính desktop, thiết bị điện tử nhỏ, máy cầm tay hiện đại và trình duyệt
  • Cũng có các bản port cho GBA, Nintendo DS, Playdate, DOS, PlayStation Vita, Raspberry Pi Pico, Teletype, ESP32, Amiga, iOS, STM32, IBM PC, v.v.; một số chưa hoàn thiện
  • Các chương trình Uxn được cung cấp làm ví dụ bao gồm đồ chơi, game và công cụ
    • Oquonie: thế giới kỳ lạ
    • Donsol: game thám hiểm hầm ngục bằng thẻ bài
    • Left: trình soạn thảo văn bản
    • Noodle: chương trình vẽ
    • Orca: môi trường live coding
    • Nasu: trình chỉnh sửa sprite
    • Turye: trình chỉnh sửa font
    • Catclock: đồng hồ desktop
    • Dexe: trình chỉnh sửa hex
    • Bicycle: REPL tương tác

Tài liệu học tập và cộng đồng

1 bình luận

 
GN⁺ 2023-07-16
Ý kiến Hacker News
  • Mọi khía cạnh của nhóm này đều rất thú vị. Họ là những du mục số trên thuyền, và mỗi bài viết đều cho thấy thoáng qua một cuộc sống mà tôi chưa từng nghĩ là có thể tồn tại
    Mỗi lần vào trang của họ là lại như rơi vào hang thỏ. Nếu sống một cuộc đời khác, có lẽ tôi cũng muốn thử
    https://100r.co/site/dry_toilet_installation.html

    • Có rất nhiều thứ thật sự hấp dẫn. Cá nhân tôi thích nhất là ống thu nhiệt mặt trời, nơi họ nấu ăn và thậm chí nướng bánh chỉ bằng ánh nắng
      https://100r.co/site/solar_evacuated_tube_cooking.html
    • Họ cũng dùng 9front rất tích cực vì đã chán ngấy các dependency và những hệ điều hành phình to. 9front rất nhỏ, mọi thứ đều được biên dịch tĩnh và API cũng gọn
      Việc cross-compile cũng dễ, và khi đọc sách nhập môn Plan 9 của Ballesteros thì cảm giác về khoa học máy tính cũng dần hình thành một cách tự nhiên
    • Nếu quan tâm thì cũng có wiki cá nhân của Devine: https://wiki.xxiivv.com/site/home.html
      Có rất nhiều nội dung tuyệt vời
    • Điều thực sự ấn tượng là họ vẫn có năng lượng, động lực và thời gian để tạo ra một máy ảo trong khi còn phải xử lý tất cả những vấn đề kiểu “đời thực” này
      Việc nó chạy được trên nhiều phần cứng thật khác nhau cũng đáng kinh ngạc. Tôi đã thấy nhiều dự án máy ảo, nhưng đa số đều có cảm giác bị cô lập bên trong một máy tính khác. Có vẻ như những ràng buộc cực đoan đẩy thiết kế theo một hướng hoàn toàn khác
    • Trên YouTube có cả một tiểu văn hóa lớn của giới đi biển, và cá nhân tôi xem nó như nội dung để trốn thực tại
      Dĩ nhiên thuật toán YouTube vẫn là thuật toán YouTube và chủ nghĩa tư bản vẫn là chủ nghĩa tư bản, nên khá nhiều video đi biển cũng là nội dung bikini. Đồng thời, cuộc sống sửa chữa, cải tạo và nâng cấp những chiếc du thuyền nhỏ cũng chiếm tỷ trọng lớn. Từ làm việc với sợi thủy tinh đến điện mặt trời và khử muối nước, tất cả tạo nên một cái nhìn rất thú vị về một lối sống khác
  • Tôi thật sự rất kính trọng nhóm này. Cũng rất đáng đọc bài viết tuyệt vời của họ về hành trình đi tìm một mô hình tính toán đơn giản hơn: https://100r.co/site/weathering_software_winter.html

  • 100r khiến tôi nhớ đến thứ mà dạo này chúng ta đánh mất nhiều nhất, đó là lòng can đảm
    Chúng ta sợ nắm lấy cơ hội, khám phá ý tưởng, chọn con đường khó hơn một chút, và lao vào những thử thách khó nhằn. Chúng ta né tránh rủi ro và không muốn thử cái mới
    Đọc về hành trình của họ, mọi việc họ làm trên thuyền, thái độ của họ với code, đặc biệt là khái niệm làm phần mềm cho một người duy nhất, khiến tôi thấy mình như một kẻ hèn nhát. Nó làm tôi muốn can đảm hơn trong cách mình đối diện với code, với cuộc sống và với môi trường xung quanh
    Cảm ơn Rek và Devine vì mọi công việc của họ. Thật vui khi thấy họ bận rộn mà chẳng làm gì cả

  • Tài khoản tác giả trên Mastodon(https://merveilles.town/@neauoire) là cả một kho báu các dự án nhỏ và ảnh chụp màn hình đến từ vũ trụ tính toán song song là chiếc máy tính của Devine
    Tôi cũng rất khuyên nghe tập podcast họ tham gia cùng Future of Coding: https://futureofcoding.org/episodes/044.html và còn có phần tiếp theo nói về Orca, một môi trường âm nhạc live tuyệt vời: https://futureofcoding.org/episodes/045.html
    Nhờ người này và những người dùng Lisp lâu năm trên diễn đàn này mà tôi đã suy nghĩ rất lâu về điện toán thay thế và các ngôn ngữ lập trình ngách. Uxn vẫn nằm trong danh sách việc cần làm của tôi, còn dạo này tôi đang bận với nhánh Smalltalk trước khi đào sâu vào Forth và Uxn :)

    • Họ có nhắc tới một lịch chia năm thành 26 chu kỳ hai tuần từ A đến Z, nhưng 26 lần hai tuần chỉ có 364 ngày. Tôi tự hỏi lịch này định coi một năm là 364 ngày, hay sẽ thêm những ngày dư ra ngoài 26 chu kỳ hai tuần đó, hay theo cách nào khác
    • Trên hồ sơ Mastodon có ghi ngay they/them
  • Mỗi khi họ lên trang nhất tôi đều thấy vui. Phần mềm họ viết rất thú vị, nhưng những gì họ làm để con thuyền trở nên tự cung tự cấp nhất có thể còn đáng nể hơn nữa

  • Có ai là fan của Blame! không? https://wiki.xxiivv.com/site/devine_lu_linvega.html https://blame.fandom.com/wiki/Davine_Lu_Linvega

  • Trong các trang của họ, thứ tôi thật sự hay ghé xem là trang công thức nấu ăn: https://grimgrains.com/site/home.html
    Ở đó có khá nhiều nội dung thú vị cho những ai thích nấu ăn

  • Maxine Chevalier-Boisvert, người nổi tiếng với công trình Basic Block Versioning JIT và gần đây là yjit, cũng đang bàn về những ý tưởng tương tự
    https://pointersgonewild.com/2023/02/24/building-a-minimalistic-virtual-machine/

  • Đây là một thiết kế máy ảo nhỏ gọn và thanh lịch, nên nhiều người ở đây có lẽ sẽ thấy hứng thú

    • Điều đáng kinh ngạc là nó thực tế đến mức nào. Họ đã port nó sang đủ loại thiết bị cũ kỹ nhặt được, và còn làm ra cả một đống phần mềm
      Nó không chỉ dừng ở một thiết kế nằm trên trang web của ai đó, mà thực sự tạo ra công cụ, trò chơi và nghệ thuật
    • Nếu muốn nhìn khái niệm này theo hướng chính thống hơn thì cũng đáng xem RISC-V. Để triển khai một máy ảo thông dịch RISC-V cơ bản không có extension thì chỉ mất khoảng một ngày
      Tôi đã tự làm rồi, và nó có hơi phức tạp hơn tập lệnh của họ một chút nhưng không khác biệt quá lớn. Vì compiler thật sự có thể nhắm tới nó, nên về cơ bản bạn có thể chạy gần như bất kỳ phần mềm nào. Dù vậy, bạn vẫn phải cung cấp phần còn lại của môi trường máy ảo cho I/O và những thứ tương tự
  • Một kiểu game retro dựa trên Forth, cấu hình thấp, máy ảo được port gần như khắp nơi, nên khá giống Z-Machine nhưng thiên về pixel hơn
    Có vẻ rất hợp cho kiểu game phong cách GB, nơi bạn không phải vật lộn với tập lệnh kiểu Z80 hay lo một lỗi timing chu kỳ kỳ quặc lúc hiển thị sprite sẽ làm cháy màn LCD thật