SkillAgentSearch skills...

Trufflesqueak

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

Install / Use

/learn @hpi-swa/Trufflesqueak

README

![TruffleSqueak][ts_logo]

[![Latest Release][ts_latest_badge]][ts_latest] [![Slack][graalvm_slack_badge]][graalvm_slack] [![Twitter][ts_twitter_badge]][ts_twitter] [![Build Status][ts_gh_action_badge]][ts_gh_action] [![Codacy][codacy_grade]][codacy] [![Coverage][codacy_coverage]][codacy] [![License][ts_license_badge]][ts_license]

A [Squeak/Smalltalk][squeak] VM and Polyglot Programming Environment for the [GraalVM][graalvm].

Getting Started

  1. Download and extract the latest [TruffleSqueak standalone][ts_latest] 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][ts_issues] or join the #trufflesqueak channel on the [GraalVM Slack][graalvm_slack].

Development

Active development is done in the [main branch][ts_main]. Please feel free to open a [pull request][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, please refer to the AGENTS.md.

Contributing

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

Publications

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

2020

  • Fabio Niephaus, Patrick Rein, Jakob Edding, Jonas Hering, Bastian König, Kolya Opahle, Nico Scordialo, and Robert Hirschfeld. Example-based Live Programming for Everyone: Building Language-agnostic Tools for Live Programming With LSP and GraalVM. In Proceedings of [the ACM Symposium for New Ideas, New Paradigms, and Reflections on Everything to do with Programming and Software (Onward!) 2020][onward20], co-located with the Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 108-124, Chicago, United States, November 17-18, 2020, ACM DL.
    [![doi][onward20_doi]][onward20_paper] [![Preprint][preprint]][onward20_pdf]
  • Jan Ehmueller, Alexander Riese, Hendrik Tjabben, Fabio Niephaus, and Robert Hirschfeld. Polyglot Code Finder. In Proceedings of [the Programming Experience 2020 (PX/20) Workshop][px20], companion volume to International Conference on the Art, Science, and Engineering of Programming (‹Programming›), co-located with the International Conference on the Art, Science, and Engineering of Programming (‹Programming›), 6 pages, Genova, Italy, April 1, 2019, ACM DL.
    [![doi][px20_doi]][px20_paper] [![Preprint][preprint]][px20_pdf]
  • Alexander Riese, Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld. User-defined Interface Mappings for the GraalVM. In Proceedings of [the Interconnecting Code Workshop (ICW) 2020][icw20], companion volume to the International Conference on the Art, Science, and Engineering of Programming (‹Programming›), co-located with the International Conference on the Art, Science, and Engineering of Programming (‹Programming›), pages 19-22, Porto, Portugal, March 23, 2020, ACM DL.
    [![doi][icw20_doi]][icw20_paper] [![Preprint][preprint]][icw20_pdf]

2019

  • Fabio Niephaus. [Smalltalk with the GraalVM][javaadvent19]. In the JVM Programming Advent Calendar, December 7, 2019.
  • Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld. GraalSqueak: Toward a Smalltalk-based Tooling Platform for Polyglot Programming. In Proceedings of [the International Conference on Managed Programming Languages and Runtimes (MPLR) 2019][mplr19], co-located with the Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA), 12 pages, Athens, Greece, October 21, 2019, ACM DL.
    [![doi][mplr19_doi]][mplr19_paper] [![Preprint][preprint]][mplr19_pdf]
  • Daniel Stolpe, Tim Felgentreff, Christian Humer, Fabio Niephaus, and Robert Hirschfeld. Language-independent Development Environment Support for Dynamic Runtimes. In Proceedings of [the Dynamic Languages Symposium (DLS) 2019][dls19], co-located with the Conference on Object-oriented Pro
View on GitHub
GitHub Stars308
CategoryEducation
Updated2d ago
Forks16

Languages

Java

Security Score

100/100

Audited on Mar 25, 2026

No findings