Home

Awesome

TruffleSqueak

Latest Release Slack Twitter Build Status Codacy Coverage License

A Squeak/Smalltalk VM and Polyglot Programming Environment for the GraalVM.

Getting Started

  1. Download and extract the latest TruffleSqueak standalone for your platform.

  2. Run the following in a terminal to start TruffleSqueak:

    bin/trufflesqueak [<option>...] [<imageName> [<argument>...]]
    
  3. (Optional) Install additional languages (only available in a JVM standalone):

    # Evaluate the following from within TruffleSqueak
    Polyglot installLanguage
    
    # or run the following on the command line
    bin/trufflesqueak-polyglot-get js # or ruby, python, java, llvm, wasm
    

Demos

<table> <tr align="center"> <td width="50%"><a href="https://www.youtube.com/watch?v=rZiH9ub1aT4" title="TruffleSqueak: Polyglot Notebooks (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90332594-6c2ead00-dfbe-11ea-8e92-f3136ad6ca05.png" alt="TruffleSqueak: Polyglot Notebooks (Demo)" /><br>TruffleSqueak: Polyglot Notebooks</a></td> <td width="50%"><a href="https://www.youtube.com/watch?v=_rnOW3ZMYQ4" title="TruffleSqueak: Workspace, Inspector, and Explorer (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90333124-4f48a880-dfc3-11ea-8962-edc866a8d21a.png" alt="TruffleSqueak: Workspace, Inspector, and Explorer (Demo)" /><br>TruffleSqueak: Workspace, Inspector, and Explorer</a></td> </tr> <tr align="center"> <td width="50%"><a href="https://twitter.com/fniephaus/status/1264839969115340800" title="TruffleSqueak: Live Plots with ggplot2 (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90331920-b319a400-dfb8-11ea-877d-e0505c8adf20.png" alt="TruffleSqueak: Live Plots with ggplot2 (Demo)" /><br>TruffleSqueak: Live Plots with ggplot2</a></td> <td width="50%"><a href="https://www.youtube.com/watch?v=If7xNBYA0Bk" title="TruffleSqueak: Polyglot User Interfaces (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90332427-0d1c6880-dfbd-11ea-9bfc-bc9927784437.png" alt="TruffleSqueak: Polyglot User Interfaces (Demo)" /><br>TruffleSqueak: Polyglot User Interfaces</a></td> </tr> <tr align="center"> <td width="50%"><a href="https://www.youtube.com/watch?v=MxYoc6chBlg" title="TruffleSqueak: Polyglot Code Editor (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90332428-10175900-dfbd-11ea-85b0-1b04d735827a.png" alt="TruffleSqueak: Polyglot Code Editor (Demo)" /><br>TruffleSqueak: Polyglot Code Editor</a></td> <td width="50%"><a href="https://www.youtube.com/watch?v=W7p-W9VAbQU" title="TruffleSqueak: Polyglot Code Finder (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90332430-10afef80-dfbd-11ea-8448-b04e7a222f78.png" alt="TruffleSqueak: Polyglot Code Finder (Demo)" /><br>TruffleSqueak: Polyglot Code Finder</a></td> </tr> <tr align="center"> <td width="50%"><a href="https://www.youtube.com/watch?v=wuGVyzUsEqE" title="TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms"><img src="https://user-images.githubusercontent.com/2368856/90332179-350acc80-dfbb-11ea-803b-bdeb28577ef9.png" alt="TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms" /><br>TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms</a></td> <td width="50%"><a href="https://twitter.com/fniephaus/status/1363499071575642112" title="TruffleSqueak: CallTargetBrowser (Demo)"><img src="https://user-images.githubusercontent.com/2368856/108628591-24e91380-745c-11eb-9ff5-030a2b10dc35.png" alt="TruffleSqueak: CallTargetBrowser (Demo)" /><br>TruffleSqueak: CallTargetBrowser</a></td> </tr> <tr align="center"> <td width="50%"><a href="https://twitter.com/fniephaus/status/1075807587491291137" title="TruffleSqueak: Polyglot Workspace (Demo)"><img src="https://user-images.githubusercontent.com/2368856/90332290-e4e03a00-dfbb-11ea-92e5-55bded783c8e.png" alt="TruffleSqueak: Polyglot Workspace (Demo)" /><br>TruffleSqueak: Polyglot Workspace</a></td> <td width="50%"></td> </tr> </table>

Talks

<table> <tr align="center"> <td width="50%"><a href="https://www.youtube.com/watch?v=MVblV_ruG28" title="Some Smalltalk with Fabio Niephaus and Thomas Würthinger (~1h10min, GraalVM Stream on Twitch, 2021)"><img src="https://user-images.githubusercontent.com/2368856/111808110-f849df80-88d3-11eb-8c86-3d07cceae296.png" alt="Some Smalltalk with Fabio Niephaus and Thomas Würthinger (~1h10min, GraalVM Stream on Twitch, 2021)" /><br>Some Smalltalk with Fabio Niephaus and Thomas Würthinger<br>(~1h10min, GraalVM Stream on Twitch, 2021)</a></td> <td width="50%"><a href="https://www.youtube.com/watch?v=bJ8Y_LTzwD8" title="Exploiting Dynamic Run-time Data with TruffleSqueak (~30min, Virtual Machine Meetup, 2021)"><img src="https://user-images.githubusercontent.com/2368856/142394925-4ec6e9a7-5a7a-4d15-985e-da39df107e8f.png" alt="Exploiting Dynamic Run-time Data with TruffleSqueak (~30min, Virtual Machine Meetup, 2021)" /><br>Exploiting Dynamic Run-time Data with TruffleSqueak<br>(~30min, Virtual Machine Meetup, 2021)</a></td> </tr> <tr align="center"> <td width="50%"><a href="https://www.youtube.com/watch?v=9SyOVmAqqLg" title="Polyglot Programming with TruffleSqueak and GraalVM (~21min, HPI Symposium at SAP, 2021)"><img src="https://user-images.githubusercontent.com/2368856/111785173-8d40de80-88bc-11eb-82e8-bff9008638ad.png" alt="Polyglot Programming with TruffleSqueak and GraalVM (~21min, HPI Symposium at SAP, 2021)" /><br>Polyglot Programming with TruffleSqueak and GraalVM<br>(~21min, HPI Symposium at SAP, 2021)</a></td> <td width="50%"><a href="https://www.youtube.com/watch?v=FAk3Ec8hmzk" title="Polyglot Notebooks with Squeak/Smalltalk on the GraalVM (~28min, ESUG 2019)"><img src="https://user-images.githubusercontent.com/2368856/111785181-903bcf00-88bc-11eb-8722-7ca7d0558a22.png" alt="Polyglot Notebooks with Squeak/Smalltalk on the GraalVM (~28min, ESUG 2019)" /><br>Polyglot Notebooks with Squeak/Smalltalk on the GraalVM<br>(~28min, ESUG 2019)</a></td> </tr> </table>

Community Support

If you have a question, need some help, or want to discuss a new feature, feel free to open an issue or join the #trufflesqueak channel on the GraalVM Slack.

Documentation

Documentation is available in docs/.

Development

Active development is done in the main branch. Please feel free to open a pull request if you'd like to contribute a bug-fix, documentation, or a new feature. For more information, for example on how to build TruffleSqueak from source or set up a development environment, please refer to the development.md.

Contributing

Please report any issues here on GitHub and open pull requests if you'd like to contribute code or documentation.

Publications

To cite this work, please use the GraalSqueak paper presented at MPLR'19.

2020

2019

2018

License

TruffleSqueak is released under the MIT license.