Technology1 min read

Pharo in the Browser with WebAssembly

By · Published by Everything Blog

In short

The environment enables users to load projects directly into the browser using .st files, Pharo .zip archives, or combined .image, .changes, and .sources files. Network-enabled tools like Iceberg and Metacello manage version control workflows by routing traffic through configurable CORS proxies. Because proxies can inspect transmitted code, users can designate trusted endpoints or bypass them entirely by selecting "None" to communicate directly with permissive repository servers. Furthermore, the browser stores these security preferences locally so that incoming external links cannot alter the established connection settings.

Key points

  • Web browsers can execute the complete Pharo environment client-side using a combination o…: Web browsers can execute the complete Pharo environment client-side using a combination of WebAssembly and JavaScript.
  • Repository operations require a carefully selected or self-hosted proxy because intermedi…: Repository operations require a carefully selected or self-hosted proxy because intermediary servers can inspect all code and credentials.
  • Local browser storage preserves user proxy configurations to prevent external links from…: Local browser storage preserves user proxy configurations to prevent external links from silently overriding sensitive network settings.

Sources checked by our analysis pipeline: 1

Loading Pharo…

Drop to file in or opena Smalltalk .st file, a Pharo .zip, or an .image with its .changes and its .sources

Iceberg's https:// clones, fetches, pulls and pushes, and Metacello's github:// loads, go to this CORS proxy: each request goes to the proxy's URL followed by the host and the path of the repository, such as github.com/pharo-project/pharo.git. The proxy sees the code and any credentials that pass through it, so choose only one that you run or trust: the user name and token that a push asks for go only through My proxy, or straight to the host with None, never through the site's default. With None, the requests go to the repository itself, which works only for a server that lets this page in (CORS). This browser keeps your choice; a link cannot set it.

This page needs JavaScript and WebAssembly.

Technology