2 pontos por GN⁺ 2023-07-16 | 1 comentários | Compartilhar no WhatsApp
  • Uxn/Varvara é uma pilha de computação pessoal centrada em uma pequena máquina virtual, permitindo executar a mesma aplicação em vários sistemas
  • Embora tenha surgido de uma necessidade específica de hospedar aplicações gráficas, está disponível publicamente para adoção por qualquer pessoa como alvo de release
  • Os programas são escritos em sua própria linguagem, Uxntal, e a forma de distribuição se parece com o compartilhamento de ROMs de jogos de emuladores de consoles clássicos
  • Para executar, é necessário um emulador específico para cada sistema operacional, e também é possível implementar seu próprio emulador com base nas especificações da VM e de I/O
  • Como a mesma ROM roda em desktops, pequenos dispositivos eletrônicos, handhelds e navegadores, fica mais fácil manter softwares pequenos por muito tempo e portá-los entre diferentes ambientes

A pilha de computação proposta por Uxn/Varvara

  • O ecossistema Uxn/Varvara é uma pilha de computação pessoal centrada em uma pequena máquina virtual
  • O objetivo principal é permitir que a mesma aplicação rode em vários sistemas
  • O design se baseia em uma mentalidade de implementação primeiro e é voltado para a necessidade concreta de hospedar aplicações gráficas
  • Uxn é programado em sua própria linguagem, Uxntal
  • A distribuição de programas Uxn é semelhante ao compartilhamento de ROMs de jogos para emuladores de consoles clássicos
  • Mais detalhes sobre o contexto do design podem ser vistos nas notas de uxn design

Emuladores e execução de ROMs

  • Para executar um programa Uxn, é necessário um emulador compatível com o sistema
  • Também é possível implementar seu próprio emulador consultando as especificações da VM e de I/O
  • O emulador desktop multiplataforma requer 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
  • Há várias formas de executar uma ROM
    • Usar um programa lançador
    • Arrastar um arquivo .rom para a janela do emulador
    • Executar bin/uxnemu path/to/example.rom no terminal
  • Os controles básicos do emulador usam teclas de função e mapeamento de botões
    • F1: alternar zoom
    • F2: alternar depurador
    • F3: captura de tela
    • F4: carregar launcher.rom
    • L-Ctrl: A, L-Alt: B, L-Shift: Select, Home: Start

Ambientes de execução e programas de exemplo

  • A mesma ROM Uxn pode ser usada em desktops, pequenos dispositivos eletrônicos, handhelds modernos e navegadores
  • Há ports para GBA, Nintendo DS, Playdate, DOS, PlayStation Vita, Raspberry Pi Pico, Teletype, ESP32, Amiga, iOS, STM32, IBM PC e outros, embora alguns ainda não estejam concluídos
  • Os programas Uxn oferecidos como exemplo incluem brinquedos, jogos e ferramentas

Materiais de estudo e comunidade

1 comentários

 
GN⁺ 2023-07-16
Opiniões no Hacker News
  • Tudo sobre esse grupo é fascinante. Eles são nômades digitais em um barco, e cada texto dá um vislumbre de uma vida que eu nunca tinha sequer pensado ser possível
    Toda vez que entro no site, acabo caindo numa toca de coelho. Talvez eu quisesse ter tentado isso em outra vida
    https://100r.co/site/dry_toilet_installation.html

    • Tem muita coisa realmente interessante. Pessoalmente, o que mais gostei foi o coletor solar térmico, sobre cozinhar e até assar pão com luz do sol
      https://100r.co/site/solar_evacuated_tube_cooking.html
    • Eles também usam bastante o 9front, por estarem cansados de dependências e sistemas operacionais inchados. O 9front é minúsculo, tudo é compilado estaticamente, e a API também é pequena
      A compilação cruzada é fácil, e, lendo a introdução ao Plan 9 de Ballesteros, você naturalmente desenvolve uma noção de ciência da computação
    • Se tiver interesse, há também a wiki pessoal do Devine: https://wiki.xxiivv.com/site/home.html
      Tem muito conteúdo incrível
    • É realmente impressionante que eles tenham energia, motivação e tempo para criar uma máquina virtual enquanto lidam com todos esses problemas do “mundo real”
      Também é surpreendente que ela rode em vários hardwares reais. Já vi muitos projetos de máquinas virtuais, mas em geral eles pareciam isolados dentro de outro computador. Restrições extremas parecem empurrar o design para uma direção completamente diferente
    • No YouTube há uma grande subcultura de velejadores, e pessoalmente consumo esse conteúdo como escapismo
      Claro, o algoritmo do YouTube é o algoritmo do YouTube, e capitalismo é capitalismo, então uma boa parte dos vídeos de navegação também é conteúdo de biquíni. Ao mesmo tempo, a vida de consertar, modificar e atualizar pequenos veleiros também ocupa um grande espaço. Vai de trabalho com fibra de vidro a energia solar e dessalinização, dando um vislumbre de uma vida realmente fascinante
  • Tenho muito respeito por essa equipe. Também vale ler este excelente texto sobre a busca por um modelo de computação mais simples: https://100r.co/site/weathering_software_winter.html

  • A 100r me faz lembrar do que mais perdemos hoje em dia: coragem
    Temos medo de agarrar oportunidades, explorar ideias, escolher um caminho um pouco mais difícil e encarar desafios exigentes. Somos avessos a riscos e não queremos tentar coisas novas
    Ao ler sobre as viagens deles, todo o trabalho que fazem no barco, a postura em relação ao código e, especialmente, o conceito de criar software para uma pessoa só, eu me sinto um covarde. Dá vontade de ser mais corajoso na forma como lido com código, com a vida e com o ambiente ao meu redor
    Agradeço por todo o trabalho de Rek e Devine. Fico feliz em vê-los ocupados sem fazer nada

  • A conta do autor no Mastodon (https://merveilles.town/@neauoire) é um tesouro de pequenos projetos e capturas de tela vindos do universo computacional paralelo que é o computador de Devine
    Recomendo muito também o episódio de podcast em que ele participou no Future of Coding: https://futureofcoding.org/episodes/044.html e há ainda uma continuação sobre o Orca, um ambiente incrível para música ao vivo: https://futureofcoding.org/episodes/045.html
    Essa pessoa e os antigos usuários de Lisp deste fórum me fizeram pensar por muito tempo em computação alternativa e linguagens de programação de nicho. Uxn está na minha lista de afazeres, e atualmente estou ocupado com a família Smalltalk antes de entrar em Forth e Uxn :)

    • Foi mencionado um calendário que divide o ano, de A a Z, em 26 quinzenas, mas 26 quinzenas dão apenas 364 dias. Fico curioso se, nesse calendário, a ideia é fazer o ano ter 364 dias, adicionar dias extras fora das 26 quinzenas, ou usar algum outro método
    • No perfil do Mastodon está escrito claramente they/them
  • Sempre fico feliz quando eles aparecem na primeira página. O software que escrevem é interessante, mas o trabalho que fazem para tornar o barco o mais autossuficiente possível é realmente impressionante

  • Algum fã de Blame!? https://wiki.xxiivv.com/site/devine_lu_linvega.html https://blame.fandom.com/wiki/Davine_Lu_Linvega

  • O site deles que eu realmente consulto com frequência é o de receitas: https://grimgrains.com/site/home.html
    Há bastante coisa divertida ali para quem gosta de cozinhar

  • Maxine Chevalier-Boisvert, conhecida pelo trabalho em Basic Block Versioning JIT e, mais recentemente, pelo yjit, também tem tratado de ideias parecidas ultimamente
    https://pointersgonewild.com/2023/02/24/building-a-minimalistic-virtual-machine/

  • É um design de máquina virtual pequeno e elegante, então muita gente aqui deve achar interessante

    • O surpreendente é o quanto ele é prático. Foi portado para todo tipo de equipamento antigo que estava por aí, e eles criaram um monte de software
      Não é só um design numa página pessoal de alguém; estão criando ferramentas, jogos e arte
    • Se quiser ver esse conceito de uma forma mais mainstream, vale olhar também para RISC-V. Dá para implementar uma máquina virtual interpretadora de RISC-V básico, sem extensões, em mais ou menos um dia
      Eu mesmo fiz isso, e, embora seja um pouco mais complexo que o conjunto de instruções deles, a diferença não é grande. Como compiladores reais podem tê-lo como alvo, ele consegue rodar praticamente qualquer software. Ainda assim, é preciso fornecer o restante do ambiente da máquina virtual, para entrada/saída etc.
  • Por ser um jogo em estilo retrô baseado em Forth, de baixa especificação e com uma máquina virtual portada para quase qualquer lugar, lembra a Z-Machine, mas mais voltada a pixels
    Parece ótimo para jogos no estilo GB, sem precisar brigar com instruções parecidas com Z80 nem se preocupar em queimar um LCD real por causa de algum bug estranho de temporização de ciclos durante a exibição de sprites