Pharo теперь запускается прямо в браузере на WebAssembly

Pharo in the Browser with WebAssembly

Проект Pharo World позволяет запускать виртуальную машину Pharo на WebAssembly прямо в браузере: можно загрузить образ Pharo 13.1, 14 или 15, открыть файл .st, .zip или .image вместе с .changes и .sources, а также сохранять образы локально в браузере. Есть консоль Smalltalk, настройки Git-прокси для Iceberg и Metacello и загрузка сторонних образов.

Прокси видит код и любые учётные данные, которые через него проходят, поэтому выбирайте только тот, который вы запускаете сами или которому доверяете.
  1. jsrcout

    До сих пор помню выпуск Byte про Smalltalk за 1981 год [0]. Для меня-старшеклассника это было точно Будущее. Выглядело так круто. Правда, попробовать на семейном Apple II+ [1] возможности не было.

    Пробуя разные системы семейства Smalltalk в последние годы, я увидел преимущества реализации всей системы на одном языке и работы с ней в одном образе. Есть освежающая цельность и предсказуемость во всём, и повсеместная простота вместо фрактальной сложности.

    Можно просматривать всю кодовую базу в одном окне — язык/компилятор, математические операции (кроме базовых примитивов, полагаю), структуры данных, графику, оконную систему, всё аккуратно организовано. Методы, даже критически важные, в основном маленькие, прямолинейные и без лишнего мусора. Многие — всего в одну-две строки.

    Smalltalk даёт разработчику огромную власть. Ты работаешь прямо «в коде»; твои изменения мгновенно вступают в силу. Можно тривиально модифицировать саму систему — просто зайди туда и начни печатать. Всё в том же окне браузера. Легко заглянуть внутрь любой работающей программы, изменить её данные и даже код, и просто продолжать. Даже сейчас это ощущается футуристично.

    Ты получаешь мощную графику и оконную систему из коробки вместо обычной истории, где ты выбираешь библиотеки OpenGL/Vulkan/GUI/DOM и настраиваешь инструменты вроде make/rpm/docker/pip/npm. Это, пожалуй, самый «научно-фантастический» аспект, безусловно.

    Короче говоря, это было то будущее из «Джетсонов», которое казалось возможным, когда я только начинал. Будущее, которое мы на самом деле получили, из […]

  2. lynndotpy

    Я баловался с Pharo где-то в 2017 или 2018 году, сделал на нём клон «Сапёра».

    Мне очень _очень_ нравятся среды, где возможна быстрая и мгновенная итерация, особенно для любого проекта, в построении которого есть хоть какая-то артистичность или исследование. Одна из вещей — это то, что (в некоторых случаях) ты видишь промежуточные, эмерджентные или непреднамеренные результаты, которых иначе бы не увидел.

    Хотя это не особенно интересный непреднамеренный результат, но из-за логической ошибки (кажется) в «Сапёре» раскрытие происходило при каждом действии (то есть очищенные клетки распространялись с каждым шагом, а не мгновенно).

  3. pmkary

    Не могу поверить своим глазам, что Pharo настолько быстрый — в браузере, на мобильном. То есть я понимаю, что технологии продвинулись и вокруг есть куда более безумные вещи (вроде запуска OS X Tiger через Infinite Mac, или SketchUp web, или...), но это всё равно меня шокирует. Технологии развиваются слишком быстро, мой обезьяний мозг не успевает за ними.

  4. ajasmin

    Отлично!

    Значит, я полагаю, это интерпретатор байт-кода, скомпилированный с помощью Emscripten? Разве у Squeak не было похожей страницы для попробовать?

    Я бы предположил, что здесь нет попыток JIT-компиляции или предварительной компиляции части кода образа, что было бы подвигом, учитывая динамическую природу Smalltalk и ограниченную модель исполнения WebAssembly.

    Я надеялся, что будет что-то такое, с чем можно поиграться. А как можно собрать код?

  5. Cieric

    Я раньше никогда не пользовался Pharo, но в моём Firefox оно рендерится слишком сильно вверх и влево. Не уверен, как мышь транслируется в canvas, но, похоже, с этим есть проблема (или наоборот, и это странное масштабирование canvas). Однако удаление `transform: scale(calc(1 / var(--world-dpr, 1)));` из CSS canvas, кажется, исправляет это для меня.

Ещё за этот день

2026-11-11