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 и загрузка сторонних образов.
Прокси видит код и любые учётные данные, которые через него проходят, поэтому выбирайте только тот, который вы запускаете сами или которому доверяете.
- jsrcout
До сих пор помню выпуск Byte про Smalltalk за 1981 год [0]. Для меня-старшеклассника это было точно Будущее. Выглядело так круто. Правда, попробовать на семейном Apple II+ [1] возможности не было.
Пробуя разные системы семейства Smalltalk в последние годы, я увидел преимущества реализации всей системы на одном языке и работы с ней в одном образе. Есть освежающая цельность и предсказуемость во всём, и повсеместная простота вместо фрактальной сложности.
Можно просматривать всю кодовую базу в одном окне — язык/компилятор, математические операции (кроме базовых примитивов, полагаю), структуры данных, графику, оконную систему, всё аккуратно организовано. Методы, даже критически важные, в основном маленькие, прямолинейные и без лишнего мусора. Многие — всего в одну-две строки.
Smalltalk даёт разработчику огромную власть. Ты работаешь прямо «в коде»; твои изменения мгновенно вступают в силу. Можно тривиально модифицировать саму систему — просто зайди туда и начни печатать. Всё в том же окне браузера. Легко заглянуть внутрь любой работающей программы, изменить её данные и даже код, и просто продолжать. Даже сейчас это ощущается футуристично.
Ты получаешь мощную графику и оконную систему из коробки вместо обычной истории, где ты выбираешь библиотеки OpenGL/Vulkan/GUI/DOM и настраиваешь инструменты вроде make/rpm/docker/pip/npm. Это, пожалуй, самый «научно-фантастический» аспект, безусловно.
Короче говоря, это было то будущее из «Джетсонов», которое казалось возможным, когда я только начинал. Будущее, которое мы на самом деле получили, из […]
- lynndotpy
Я баловался с Pharo где-то в 2017 или 2018 году, сделал на нём клон «Сапёра».
Мне очень _очень_ нравятся среды, где возможна быстрая и мгновенная итерация, особенно для любого проекта, в построении которого есть хоть какая-то артистичность или исследование. Одна из вещей — это то, что (в некоторых случаях) ты видишь промежуточные, эмерджентные или непреднамеренные результаты, которых иначе бы не увидел.
Хотя это не особенно интересный непреднамеренный результат, но из-за логической ошибки (кажется) в «Сапёре» раскрытие происходило при каждом действии (то есть очищенные клетки распространялись с каждым шагом, а не мгновенно).
- pmkary
Не могу поверить своим глазам, что Pharo настолько быстрый — в браузере, на мобильном. То есть я понимаю, что технологии продвинулись и вокруг есть куда более безумные вещи (вроде запуска OS X Tiger через Infinite Mac, или SketchUp web, или...), но это всё равно меня шокирует. Технологии развиваются слишком быстро, мой обезьяний мозг не успевает за ними.
- ajasmin
Отлично!
Значит, я полагаю, это интерпретатор байт-кода, скомпилированный с помощью Emscripten? Разве у Squeak не было похожей страницы для попробовать?
Я бы предположил, что здесь нет попыток JIT-компиляции или предварительной компиляции части кода образа, что было бы подвигом, учитывая динамическую природу Smalltalk и ограниченную модель исполнения WebAssembly.
Я надеялся, что будет что-то такое, с чем можно поиграться. А как можно собрать код?
- Cieric
Я раньше никогда не пользовался Pharo, но в моём Firefox оно рендерится слишком сильно вверх и влево. Не уверен, как мышь транслируется в canvas, но, похоже, с этим есть проблема (или наоборот, и это странное масштабирование canvas). Однако удаление `transform: scale(calc(1 / var(--world-dpr, 1)));` из CSS canvas, кажется, исправляет это для меня.