PharoJS is an open-source development infrastructure for Pharo Smalltalk, built around the idea of βDevelop in Pharo, Run on JavaScript.β It allows developers to write code in the Pharo IDE and run or export applications to JavaScript environments. The text explicitly states that it can be used for both web client-side and server-side development, and can also support cross-platform mobile apps based on Apache Cordova/PhoneGap.
The value of PharoJS lies in connecting Pharo with the JavaScript ecosystem. Developers can reuse and extend third-party JavaScript libraries, with examples including MatterJS, D3JS, and ThreeJS. It supports mechanisms such as DOM object creation, accessing JavaScript object fields and methods, event listeners, JavaScript globals, polyfills, and NodeJS module access. During development, a WebSocket bridge connects the Pharo image with the browser, while proxies are used to represent browser-side objects; this bridge is not included in production code.
The full project code and multiple examples are available on GitHub under the MIT License. The official site states that it can be used without restriction for any purpose, so its pricing model can be regarded as free and open source. In terms of documentation, the website provides installation instructions, an FAQ, documentation, bug reporting, contribution guidelines, and Live Demos. The FAQ is fairly in-depth, covering the bridge, proxies, callbacks, polyfills, Node, browser security issues, and the differences between PharoJS Smalltalk and regular Smalltalk, offering a high level of technical transparency.
Its strengths are that it is open and free, can reuse the JavaScript ecosystem, covers browsers/Node/mobile, and preserves the Pharo development experience. Its drawbacks are also clear: it is tightly coupled with the Pharo compiler, making version support complicated; the text only explicitly mentions current support for Pharo 7 and Pharo 8, while Pharo 9 remains a future plan. Its integration with Seaside is experimental and generates redundant JS. In addition, it does not support thisContext, become:, primitives, processes, and some numeric and collection behaviors differ from regular Smalltalk.
PharoJS is better suited to developers, researchers, and open-source contributors who already have a Pharo/Smalltalk background and want to deploy applications into the JavaScript ecosystem. For mainstream front-end teams, developing directly with TypeScript/JavaScript may have a lower barrier to entry. The source text does not provide information about access from China. Dependencies such as GitHub, Discord, and Slack may be unstable in mainland China, but this is not enough to determine whether the official website itself is reachable. There is no information about commercial paid plans. Alternatives include using JavaScript/TypeScript directly, Node.js, Pharo Web/Seaside, or other Smalltalk-to-JavaScript tools.
β This review is compiled from public sources and does not constitute a purchase recommendation. Verify all facts on the vendor's official site. Verify on pharojs.org official site.
pharojs.org is an International Dev Tools provider. TG4G tracks its product information, an overall rating of 7.0/10, and a China-accessibility score of China direct-connect friendly. Click "Visit Official Site" to reach pharojs.org directly.