Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/hpi-swa/trufflesqueak

A Squeak/Smalltalk VM and Polyglot Programming Environment for the GraalVM.
https://github.com/hpi-swa/trufflesqueak

bytecode-interpreter graalvm polyglot-programming research-project smalltalk squeak truffle virtual-machine

Last synced: about 2 months ago
JSON representation

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

Lists

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:

```bash
bin/trufflesqueak [...] [ [...]]
```

## Demos


TruffleSqueak: Polyglot Notebooks (Demo)
TruffleSqueak: Polyglot Notebooks

TruffleSqueak: Workspace, Inspector, and Explorer (Demo)
TruffleSqueak: Workspace, Inspector, and Explorer



TruffleSqueak: Live Plots with ggplot2 (Demo)
TruffleSqueak: Live Plots with ggplot2

TruffleSqueak: Polyglot User Interfaces (Demo)
TruffleSqueak: Polyglot User Interfaces



TruffleSqueak: Polyglot Code Editor (Demo)
TruffleSqueak: Polyglot Code Editor

TruffleSqueak: Polyglot Code Finder (Demo)
TruffleSqueak: Polyglot Code Finder



TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms
TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms

TruffleSqueak: CallTargetBrowser (Demo)
TruffleSqueak: CallTargetBrowser



TruffleSqueak: Polyglot Workspace (Demo)
TruffleSqueak: Polyglot Workspace


## Talks


Some Smalltalk with Fabio Niephaus and Thomas Würthinger (~1h10min, GraalVM Stream on Twitch, 2021)
Some Smalltalk with Fabio Niephaus and Thomas Würthinger
(~1h10min, GraalVM Stream on Twitch, 2021)

Exploiting Dynamic Run-time Data with TruffleSqueak (~30min, Virtual Machine Meetup, 2021)
Exploiting Dynamic Run-time Data with TruffleSqueak
(~30min, Virtual Machine Meetup, 2021)



Polyglot Programming with TruffleSqueak and GraalVM (~21min, HPI Symposium at SAP, 2021)
Polyglot Programming with TruffleSqueak and GraalVM
(~21min, HPI Symposium at SAP, 2021)

Polyglot Notebooks with Squeak/Smalltalk on the GraalVM (~28min, ESUG 2019)
Polyglot Notebooks with Squeak/Smalltalk on the GraalVM
(~28min, ESUG 2019)

## 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].

## Documentation

Documentation is available in [`docs/`][ts_docs].

## 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 or
set up a development environment, please refer to the
[development.md][ts_dev_docs].

## 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 Programming,
Systems, Languages, and Applications (OOPSLA), 11 pages, Athens, Greece,
October 20, 2019, ACM DL.
[![doi][dls19_doi]][dls19_paper] [![Preprint][preprint]][dls19_pdf]
- Fabio Niephaus. [*HPI Polyglot Programming Seminar*][pp19_post]. In the
[GraalVM Blog][graalvm_blog], October 11, 2019.
- Fabio Niephaus, Tim Felgentreff, Tobias Pape, and Robert Hirschfeld.
*Efficient Implementation of Smalltalk Activation Records in Language
Implementation Frameworks*. In Proceedings of [the Workshop on Modern Language
Runtimes, Ecosystems, and VMs (MoreVMs) 2019][morevms19], 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›), 3 pages, Genova, Italy,
April 1, 2019, ACM DL.
[![doi][morevms19_doi]][morevms19_paper] [![Preprint][preprint]][morevms19_pdf]
- Tobias Pape, Tim Felgentreff, Fabio Niephaus, and Robert Hirschfeld. *Let them
fail: towards VM built-in behavior that falls back to the program*. In
Proceedings of [the Salon des Refusés (SDR) 2019 Workshop][sdr19], 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›), 7 pages, Genova,
Italy, April 1, 2019, ACM DL.
[![doi][sdr19_doi]][sdr19_paper] [![Preprint][preprint]][sdr19_pdf]
- Fabio Niephaus, Eva Krebs, Christian Flach, Jens Lincke, and Robert Hirschfeld.
*PolyJuS: A Squeak/Smalltalk-based Polyglot Notebook System for the GraalVM*. In
Proceedings of [the Programming Experience 2019 (PX/19) Workshop][px19],
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][px19_doi]][px19_paper] [![Preprint][preprint]][px19_pdf]

### 2018
- Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld. *GraalSqueak: A Fast
Smalltalk Bytecode Interpreter Written in an AST Interpreter Framework.* In
Proceedings of [the Workshop on Implementation, Compilation, Optimization of
Object-Oriented Languages, Programs, and Systems (ICOOOLPS) 2018][icooolps18],
co-located with the European Conference on Object-oriented Programming (ECOOP),
Amsterdam, Netherlands, July 17, 2018, ACM DL.
[![doi][icooolps18_doi]][icooolps18_paper] [![Preprint][preprint]][icooolps18_pdf]

## License

TruffleSqueak is released under the [MIT license][ts_license].

[codacy]: https://app.codacy.com/gh/hpi-swa/trufflesqueak/dashboard
[codacy_coverage]: https://img.shields.io/codacy/coverage/104b3300600346789d604fd269219efe.svg
[codacy_grade]: https://img.shields.io/codacy/grade/104b3300600346789d604fd269219efe.svg
[dls19]: https://conf.researchr.org/home/dls-2019
[dls19_doi]: https://img.shields.io/badge/doi-10.1145/3359619.3359746-blue.svg
[dls19_paper]: https://doi.org/10.1145/3359619.3359746
[dls19_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/StolpeFelgentreffHumerNiephausHirschfeld_2019_LanguageIndependentDevelopmentEnvironmentSupportForDynamicRuntimes_AcmDL.pdf
[eclipse_cs]: https://checkstyle.org/eclipse-cs/
[eclipse_downloads]: https://www.eclipse.org/downloads/
[github_releases]: https://help.github.com/en/github/administering-a-repository/about-releases
[graal]: https://github.com/oracle/graal
[graalvm]: https://www.graalvm.org/
[graalvm_blog]: https://medium.com/graalvm
[graalvm_download]: https://www.graalvm.org/downloads/
[graalvm_updater]: https://www.graalvm.org/docs/reference-manual/install-components/
[graalvm_slack]: https://www.graalvm.org/slack-invitation/
[graalvm_slack_badge]: https://img.shields.io/badge/slack-%23trufflesqueak-active
[icooolps18]: https://2018.ecoop.org/event/icooolps-2018-papers-graalsqueak-a-fast-smalltalk-bytecode-interpreter-written-in-an-ast-interpreter-framework
[icooolps18_doi]: https://img.shields.io/badge/doi-10.1145/3242947.3242948-blue.svg
[icooolps18_paper]: https://doi.org/10.1145/3242947.3242948
[icooolps18_pdf]: https://fniephaus.com/2018/icooolps18-graalsqueak.pdf
[icw20]: https://2020.programming-conference.org/home/icw-2020
[icw20_doi]: https://img.shields.io/badge/doi-10.1145/3397537.3399577-blue.svg
[icw20_paper]: https://dl.acm.org/doi/10.1145/3397537.3399577
[icw20_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/RieseNiephausFelgentreffHirschfeld_2020_UserDefinedInterfaceMappingsForTheGraalVM_AcmDL.pdf
[javaadvent19]: https://www.javaadvent.com/2019/12/smalltalk-with-the-graalvm.html
[morevms19]: https://2019.programming-conference.org/track/MoreVMs-2019
[morevms19_doi]: https://img.shields.io/badge/doi-10.1145/3328433.3328440-blue.svg
[morevms19_paper]: https://doi.org/10.1145/3328433.3328440
[morevms19_pdf]: https://fniephaus.com/2019/morevms19-efficient-activation-records.pdf
[mplr19]: https://conf.researchr.org/home/mplr-2019
[mplr19_doi]: https://img.shields.io/badge/doi-10.1145/3357390.3361024-blue.svg
[mplr19_paper]: https://doi.org/10.1145/3357390.3361024
[mplr19_pdf]: https://fniephaus.com/2019/mplr19-graalsqueak.pdf
[mx]: https://github.com/graalvm/mx
[onward20]: https://2020.splashcon.org/track/splash-2020-Onward-papers
[onward20_doi]: https://img.shields.io/badge/doi-10.1145/3426428.3426919-blue.svg
[onward20_paper]: https://doi.org/10.1145/3426428.3426919
[onward20_pdf]: https://fniephaus.com/2020/onward20-live-programming.pdf
[pp19_post]: https://medium.com/p/3fd06ffa59d2/
[preprint]: https://img.shields.io/badge/preprint-download-blue.svg
[pull_request]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request
[px19]: https://2019.programming-conference.org/track/px-2019-papers
[px19_doi]: https://img.shields.io/badge/doi-10.1145/3328433.3328434-blue.svg
[px19_paper]: https://doi.org/10.1145/3328433.3328434
[px19_pdf]: https://fniephaus.com/2019/px19-polyglot-notebooks.pdf
[px20]: https://2020.programming-conference.org/track/px-2020-papers
[px20_doi]: https://img.shields.io/badge/doi-10.1145/3397537.3397559-blue.svg
[px20_paper]: https://doi.org/10.1145/3397537.3397559
[px20_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/EhmuellerRieseTjabbenNiephausHirschfeld_2020_PolyglotCodeFinder_AcmDL.pdf
[sdr19]: https://2019.programming-conference.org/track/sdr-2019-papers
[sdr19_doi]: https://img.shields.io/badge/doi-10.1145/3328433.3338056-blue.svg
[sdr19_paper]: https://doi.org/10.1145/3328433.3338056
[sdr19_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/PapeFelgentreffNiephausHirschfeld_2019_LetThemFailTowardsVmBuiltInBehaviorThatFallsBackToTheProgram_AcmDL.pdf
[squeak]: https://squeak.org
[squeak_downloads]: https://squeak.org/downloads/
[ts_docs]: https://github.com/hpi-swa/trufflesqueak/tree/main/docs
[ts_dev_docs]: https://github.com/hpi-swa/trufflesqueak/blob/main/docs/development.md
[ts_gh_action]: https://github.com/hpi-swa/trufflesqueak/actions
[ts_gh_action_badge]: https://img.shields.io/github/actions/workflow/status/hpi-swa/trufflesqueak/ci.yml?branch=main
[ts_issues]: https://github.com/hpi-swa/trufflesqueak/issues/new
[ts_latest]: https://github.com/hpi-swa/trufflesqueak/releases/latest
[ts_latest_badge]: https://img.shields.io/github/v/release/hpi-swa/trufflesqueak
[ts_launcher]: https://github.com/hpi-swa/trufflesqueak/blob/main/src/de.hpi.swa.trufflesqueak.launcher/src/de/hpi/swa/trufflesqueak/launcher/TruffleSqueakLauncher.java
[ts_license]: https://github.com/hpi-swa/trufflesqueak/blob/main/LICENSE
[ts_license_badge]: https://img.shields.io/github/license/hpi-swa/trufflesqueak
[ts_logo]: https://user-images.githubusercontent.com/2368856/83736775-67f72280-a652-11ea-9785-35c2a688c0fc.png
[ts_main]: https://github.com/hpi-swa/trufflesqueak/tree/main
[ts_twitter]: https://twitter.com/TruffleSqueak
[ts_twitter_badge]: https://img.shields.io/badge/twitter-%40TruffleSqueak-active