4 pontos por GN⁺ 2025-04-15 | 2 comentários | Compartilhar no WhatsApp
  • O JSLinux é uma lista de VMs que permite executar Linux e outros sistemas operacionais diretamente no navegador, mostrando também CPU, UI, VFsync e até arquivos de configuração
  • Os itens executáveis são divididos em x86_64, x86 e riscv64, e incluem Alpine Linux, Buildroot, Fedora 33, Windows 2000 e FreeDOS
  • O console do x86_64 Alpine Linux 3.23.2 inclui suporte a AVX-512 e APX, enquanto o x86 Alpine Linux 3.12.0 é oferecido separadamente em versões Console e X Window
  • Ambientes gráficos ou X Window são oferecidos para Windows 2000, FreeDOS, Alpine Linux, Buildroot e Fedora 33; alguns menus do X Window são abertos com o botão direito do mouse
  • O item riscv64 Fedora 33 traz um aviso de que o tempo de boot é mais longo, e o Windows 2000 tem um aviso de isenção separado vinculado, sem acesso VFsync

Lista de VMs executáveis no navegador

  • O JSLinux oferece uma lista de sistemas emulados que executam Linux ou outros sistemas operacionais no navegador
  • Cada item é composto por CPU, sistema operacional, interface de usuário, disponibilidade de acesso VFsync, link de início, arquivo de configuração e observações
  • A tabela também mostra a disponibilidade de acesso ao VFsync e links de configuração relacionados ao TEMU

Itens executáveis por CPU e sistema operacional

2 comentários

 
GN⁺ 2025-04-15
Opiniões no Hacker News
  • Fabrice é realmente bom em criar software autossuficiente, e muitas vezes o resultado acaba ganhando vida própria
    Um exemplo menos conhecido é que o emulador de terminal do JSLinux foi forkado algumas vezes e hoje é conhecido como xterm.js, tornando-se o emulador de terminal dominante para embutir na web
    Agora ele está criando o verdadeiro sucessor do JSLinux, compilando o kernel e o espaço de usuário nativamente para Wasm, o que o torna muito mais rápido; para emulação de terminal, é claro, usa xterm.js
    Se você gosta de demos cheias de bugs que talvez ainda não devessem ser compartilhadas, vale ver https://linux.tombl.dev, mas por enquanto há apenas um shell busybox, então é bom estar acostumado a usar echo * em vez de ls

    • Costumo descrever Fabrice como alguém que cria projetos paralelos que outras pessoas manteriam pelo resto da vida
      Eu conhecia QEMU, ffmpeg, o trabalho relacionado a LTE e QuickJS, mas não sabia que xterm.js também tinha começado com ele
    • Qualquer comando que eu execute mostra attempted to munmap e um aviso do kernel como abaixo
      Aparece um stack trace com coisas como WARNING: CPU: 3 PID: 36 at kernel/exit.c:812 0x00000000, Comm: sh Not tainted 6.1.132, seguindo para vmlinux-NLTKI6YG.wasm e worker-MHWHWELT.js
    • Bateu nostalgia. Fazia tempo que eu não olhava, e é legal ver que um fork do meu fork de 12 anos atrás ainda está vivo e bem
      Parece que a maior parte foi reescrita, e provavelmente ficou melhor
      https://github.com/xtermjs/xterm.js
      https://github.com/chjj/term.js
    • Bacana. Se tiver eficiência energética melhor que o JSLinux e puder rodar no iOS, talvez se torne uma boa alternativa ao A-Shell ou ao iSH
      Tentei em um MacBook, mas a entrada pelo teclado não era registrada
    • Existe algum comando que funcione? ps, cat, vi e ed todos travam
      Não conheço bem o embedding do busybox, então não sei o que devo fazer
  • Fabrice é incrível. A quantidade de coisas que essa pessoa criou é realmente difícil de acreditar
    Se eu tivesse criado apenas uma das coisas que ele fez, por exemplo apenas ffmpeg, QEMU ou tinyc, eu me orgulharia disso pelo resto da vida; ele, porém, simplesmente continua hackeando outras coisas legais

    • Que tal simplesmente descobrir o que ele quer e entregar para ele? Em troca, parece que ele reescreveria corretamente as coisas quebradas que temos
      Celulares, sistemas operacionais, ambientes desktop, países, lojas de apps etc., tudo
    • Gosto desse cara. O QEMU dele é tão amplamente usado que metade do desenvolvimento Android no mundo ficou mais fácil graças a ele, e esse impacto só está crescendo
    • LZEXE, que pode ser familiar para quem usou DOS, também foi escrito pela mesma pessoa
    • Fico curioso sobre como ele escolhe no que trabalhar. Não sei se ele simplesmente segue o que acha interessante
  • Não há tantas máquinas virtuais que rodam no navegador
    https://copy.sh/v86/
    https://webvm.io/
    https://bellard.org/jslinux/
    https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce)
    https://www.pcjs.org/ oferece suporte a muitos hardwares e sistemas operacionais (https://github.com/jeffpar/pcjs)
    Para Mac OS, também há https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo... e https://jamesfriend.com.au/pce-js/pce-js-apps/

  • Observando o extremo dos desenvolvedores absurdamente produtivos, isso cria um contraste interessante com dogmas como “uma função ou um arquivo nunca deve passar de x linhas”
    quickjs.c tem 50 mil linhas e há funções com centenas de linhas
    https://github.com/bellard/quickjs/blob/master/quickjs.c
    Claro que abordagens diferentes fazem sentido dependendo do contexto

    • A resposta é simples. Bellard consegue manter na cabeça o contexto de 50 mil linhas inteiro, mas a maioria das pessoas não consegue
      Eu também tenho uma memória de trabalho relativamente grande, então só mais tarde percebi que meus limites para tamanho de arquivos e funções eram muito maiores que os dos outros
      Esse tipo de dogma é necessário quando várias pessoas precisam ler e escrever no mesmo arquivo
    • Trabalho nessa codebase, e nós a forkamos como QuickJS-ng
      No começo intimida, mas com o editor certo é surpreendentemente fácil trabalhar nela. Só que muitos editores engasgam com arquivos tão grandes
      O arquivo é muito grande, mas é organizado em alguma medida por significado; por exemplo, ao adicionar um novo método de iterador, o código relacionado fica perto, o que facilita o trabalho
    • Porque as pessoas com quem você trabalha não são Fabrice. É mais fácil dizer “não faça X de jeito nenhum” do que explicar quando é seguro quebrar a regra
      Também depende da linguagem usada. Por exemplo, a JVM pode deixar de fazer inline de funções cujo número de instruções de bytecode passe de um determinado limite
    • Um bom exemplo é o coletor de lixo do .NET, que é um único arquivo C++ de 54 mil linhas
    • Às vezes, uma única função longa que faz bem uma coisa é melhor do que várias funções fortemente acopladas e difíceis de raciocinar
      Programadores que aplicam dogmas ao pé da letra podem ser prejudiciais
  • Kohei Tokunaga está criando a próxima geração dessa linhagem
    https://ktock.github.io/container2wasm-demo/
    Usa networking no navegador baseado em fetch do Emscripten ou um proxy WebSocket compatível com POSIX
    https://ktock.github.io/container2wasm-demo/amd64-debian-was...

  • Mexi no Windows 2000 pela primeira vez em 20 anos. Sei que a nostalgia pode embaçar a visão, mas com aquela UI eu voltaria agora mesmo
    Foi realmente prazeroso ver uma barra de tarefas sem bagunça e um menu Iniciar simples, não abarrotado de recomendações inúteis e anúncios

    • Não tenho a menor vontade de voltar a usar o Windows 2000, mas é interessante ver uma versão do Windows em que a UI era consistente
      Hoje é uma mistura de quatro gerações de toolkits de GUI, em que algumas interfaces seguem um estilo e outras seguem outro
    • Artigo relacionado:
      “Windows 2000 Server named peak Microsoft. Readers say it's all been downhill since Clippy”
      https://www.theregister.com/2025/04/11/windows_2000_best_mic...
      https://news.ycombinator.com/item?id=43653421
    • Tentei instalar o Visual Basic 6 ali, mas, por causa de erros de SSL no Firefox instalado, nem consegui passar da etapa de baixar a ISO. Uma pena
    • Esse é exatamente o motivo de eu usar Xfce desde pelo menos 2010. Ele ainda funciona do mesmo jeito
      Sinto que o open source, por natureza, alinha os interesses com os dos usuários e tem mecanismos para impedir a enshittification
  • Alguém sabe como Fabrice Bellard ganha dinheiro? A produção open source desse cara é realmente impressionante
    É até difícil comparar se existe alguém em nível parecido. Imagino que a VMware tenha tentado contratá-lo, ou que o Google tenha tentado levá-lo para trabalhar com codecs de vídeo, V8, renderização do Chromium ou ffmpeg

  • Parece que a França produz um bom número de artistas de software ou contribuidores individuais extremamente talentosos, criativos e produtivos
    Não sei se é algo francês, se vem do sistema educacional das Écoles ou se há outro motivo, mas chama a atenção

    • A Bootlin é uma empresa francesa e uma grande contribuidora open source. Já trabalhei com eles e recomendo
      A tecnologia francesa tinha uma reputação meio parecida com a qualidade dos carros velhos da Renault, mas, na prática, não vi dessa forma. Na Renault e na Citroën, na verdade, acabei ficando impressionado
      Em contraste, foi difícil trabalhar com engenheiros de software alemães, que tinham uma atitude muito forte de “se não foi feito por nós, não serve”. É apenas a minha generalização, claro
      O problema do ecossistema tecnológico europeu é simples. Nós não somos bons em vender e otimizamos para eficiência de recursos. “Salário competitivo” muitas vezes acaba significando que, em hipótese alguma, se paga acima do preço de mercado
      Os EUA otimizam para crescimento e aceitam salários mais altos, tentando amortizar o custo com o crescimento
      Por fim, de onde eu venho, muita gente zomba dizendo que a imigração arruinou a França. Pode haver esse ponto de vista, mas também é verdade que a França atraiu fuga de cérebros de suas colônias e conseguiu pessoas extremamente competentes e produtivas
      Meu orientador de mestrado também era da Costa do Marfim, e na Bootlin trabalhei com engenheiros de altíssimo nível cujos nomes não eram francófonos
    • Dá para citar, por nome, pessoas comparáveis a Fabrice Bellard?
  • Em https://barebox.org/webdemo, usam o JSLinux para permitir que usuários em potencial vejam a conveniência do shell do bootloader sem precisar gravá-lo em hardware real
    É bom ver os vários forks mencionados aqui, e preciso conferir qual deles roda melhor o bareDOOM e se por acaso há algum em que o som funcione

  • O JSLinux serviu de inspiração na criação do Endor (https://endor.dev), e o trabalho dele com QEMU também vem servindo de base para muitos projetos de navegador relacionados a Wasm

    • Há algum material público detalhando como são implementadas as abordagens de máquina virtual, contêiner e Wasm nativo?
 
ndrgrd 2025-04-16

A configuração de CORS está incorreta, então para funcionar normalmente é preciso acessar https://bellard.org/jslinux/ em vez do link https://www.bellard.org/jslinux/.