{"id":13628251,"url":"https://github.com/hpi-swa/trufflesqueak","last_synced_at":"2025-04-06T09:09:51.371Z","repository":{"id":37235369,"uuid":"111902034","full_name":"hpi-swa/trufflesqueak","owner":"hpi-swa","description":"A Squeak/Smalltalk VM and Polyglot Programming Environment for the GraalVM.","archived":false,"fork":false,"pushed_at":"2024-03-20T07:56:26.000Z","size":16318,"stargazers_count":277,"open_issues_count":25,"forks_count":14,"subscribers_count":27,"default_branch":"main","last_synced_at":"2024-05-22T04:23:13.244Z","etag":null,"topics":["bytecode-interpreter","graalvm","polyglot-programming","research-project","smalltalk","squeak","truffle","virtual-machine"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hpi-swa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-24T09:45:37.000Z","updated_at":"2024-07-29T20:45:28.158Z","dependencies_parsed_at":"2023-12-04T13:27:17.011Z","dependency_job_id":"e9c09725-010a-4bce-8a1b-e8fb397a3efd","html_url":"https://github.com/hpi-swa/trufflesqueak","commit_stats":null,"previous_names":[],"tags_count":62,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpi-swa%2Ftrufflesqueak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpi-swa%2Ftrufflesqueak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpi-swa%2Ftrufflesqueak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpi-swa%2Ftrufflesqueak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hpi-swa","download_url":"https://codeload.github.com/hpi-swa/trufflesqueak/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247457803,"owners_count":20941906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bytecode-interpreter","graalvm","polyglot-programming","research-project","smalltalk","squeak","truffle","virtual-machine"],"created_at":"2024-08-01T22:00:49.144Z","updated_at":"2025-04-06T09:09:51.347Z","avatar_url":"https://github.com/hpi-swa.png","language":"Java","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"[![TruffleSqueak][ts_logo]](#)\r\n\r\n[![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]\r\n\r\nA [Squeak/Smalltalk][squeak] VM and Polyglot Programming Environment for the [GraalVM][graalvm].\r\n\r\n\r\n## Getting Started\r\n\r\n1. Download and extract the latest [TruffleSqueak standalone][ts_latest] for your platform.\r\n2. Run the following in a terminal to start TruffleSqueak:\r\n\r\n    ```bash\r\n    bin/trufflesqueak [\u003coption\u003e...] [\u003cimageName\u003e [\u003cargument\u003e...]]\r\n    ```\r\n3. (Optional) Install additional languages (only available in a JVM standalone):\r\n\r\n    ```bash\r\n    # Evaluate the following from within TruffleSqueak\r\n    Polyglot installLanguage\r\n\r\n    # or run the following on the command line\r\n    bin/trufflesqueak-polyglot-get js # or ruby, python, java, llvm, wasm\r\n    ```\r\n\r\n\r\n## Demos\r\n\r\n\u003ctable\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=rZiH9ub1aT4\" title=\"TruffleSqueak: Polyglot Notebooks (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90332594-6c2ead00-dfbe-11ea-8e92-f3136ad6ca05.png\" alt=\"TruffleSqueak: Polyglot Notebooks (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Polyglot Notebooks\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=_rnOW3ZMYQ4\" title=\"TruffleSqueak: Workspace, Inspector, and Explorer (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90333124-4f48a880-dfc3-11ea-8962-edc866a8d21a.png\" alt=\"TruffleSqueak: Workspace, Inspector, and Explorer (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Workspace, Inspector, and Explorer\u003c/a\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://twitter.com/fniephaus/status/1264839969115340800\" title=\"TruffleSqueak: Live Plots with ggplot2 (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90331920-b319a400-dfb8-11ea-877d-e0505c8adf20.png\" alt=\"TruffleSqueak: Live Plots with ggplot2 (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Live Plots with ggplot2\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=If7xNBYA0Bk\" title=\"TruffleSqueak: Polyglot User Interfaces (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90332427-0d1c6880-dfbd-11ea-9bfc-bc9927784437.png\" alt=\"TruffleSqueak: Polyglot User Interfaces (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Polyglot User Interfaces\u003c/a\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=MxYoc6chBlg\" title=\"TruffleSqueak: Polyglot Code Editor (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90332428-10175900-dfbd-11ea-85b0-1b04d735827a.png\" alt=\"TruffleSqueak: Polyglot Code Editor (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Polyglot Code Editor\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=W7p-W9VAbQU\" title=\"TruffleSqueak: Polyglot Code Finder (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90332430-10afef80-dfbd-11ea-8448-b04e7a222f78.png\" alt=\"TruffleSqueak: Polyglot Code Finder (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Polyglot Code Finder\u003c/a\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=wuGVyzUsEqE\" title=\"TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90332179-350acc80-dfbb-11ea-803b-bdeb28577ef9.png\" alt=\"TruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms\" /\u003e\u003cbr\u003eTruffleSqueak vs. OpenSmalltalkVM: Bouncing Atoms\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://twitter.com/fniephaus/status/1363499071575642112\" title=\"TruffleSqueak: CallTargetBrowser (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/108628591-24e91380-745c-11eb-9ff5-030a2b10dc35.png\" alt=\"TruffleSqueak: CallTargetBrowser (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: CallTargetBrowser\u003c/a\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://twitter.com/fniephaus/status/1075807587491291137\" title=\"TruffleSqueak: Polyglot Workspace (Demo)\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2368856/90332290-e4e03a00-dfbb-11ea-92e5-55bded783c8e.png\" alt=\"TruffleSqueak: Polyglot Workspace (Demo)\" /\u003e\u003cbr\u003eTruffleSqueak: Polyglot Workspace\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n\r\n## Talks\r\n\r\n\u003ctable\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca 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)\"\u003e\u003cimg 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)\" /\u003e\u003cbr\u003eSome Smalltalk with Fabio Niephaus and Thomas Würthinger\u003cbr\u003e(~1h10min, GraalVM Stream on Twitch, 2021)\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=bJ8Y_LTzwD8\" title=\"Exploiting Dynamic Run-time Data with TruffleSqueak (~30min, Virtual Machine Meetup, 2021)\"\u003e\u003cimg 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)\" /\u003e\u003cbr\u003eExploiting Dynamic Run-time Data with TruffleSqueak\u003cbr\u003e(~30min, Virtual Machine Meetup, 2021)\u003c/a\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr align=\"center\"\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=9SyOVmAqqLg\" title=\"Polyglot Programming with TruffleSqueak and GraalVM (~21min, HPI Symposium at SAP, 2021)\"\u003e\u003cimg 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)\" /\u003e\u003cbr\u003ePolyglot Programming with TruffleSqueak and GraalVM\u003cbr\u003e(~21min, HPI Symposium at SAP, 2021)\u003c/a\u003e\u003c/td\u003e\r\n    \u003ctd width=\"50%\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=FAk3Ec8hmzk\" title=\"Polyglot Notebooks with Squeak/Smalltalk on the GraalVM (~28min, ESUG 2019)\"\u003e\u003cimg 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)\" /\u003e\u003cbr\u003ePolyglot Notebooks with Squeak/Smalltalk on the GraalVM\u003cbr\u003e(~28min, ESUG 2019)\u003c/a\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n\r\n## Community Support\r\n\r\nIf you have a question, need some help, or want to discuss a new feature, feel\r\nfree to open an [issue][ts_issues] or join the `#trufflesqueak` channel on the\r\n[GraalVM Slack][graalvm_slack].\r\n\r\n\r\n## Documentation\r\n\r\nDocumentation is available in [`docs/`][ts_docs].\r\n\r\n\r\n## Development\r\n\r\nActive development is done in the [`main` branch][ts_main].\r\nPlease feel free to open a [pull request][pull_request] if you'd like to\r\ncontribute a bug-fix, documentation, or a new feature.\r\nFor more information, for example on how to build TruffleSqueak from source or\r\nset up a development environment, please refer to the\r\n[development.md][ts_dev_docs].\r\n\r\n\r\n## Contributing\r\n\r\nPlease [report any issues here on GitHub][ts_issues] and open\r\n[pull requests][pull_request] if you'd like to contribute code or documentation.\r\n\r\n\r\n## Publications\r\n\r\n*To cite this work, please use [the GraalSqueak paper presented at MPLR'19][mplr19_paper].*\r\n\r\n### 2020\r\n- Fabio Niephaus, Patrick Rein, Jakob Edding, Jonas Hering, Bastian König, Kolya\r\nOpahle, Nico Scordialo, and Robert Hirschfeld. *Example-based Live Programming\r\nfor Everyone: Building Language-agnostic Tools for Live Programming With LSP and\r\nGraalVM*. In Proceedings of [the ACM Symposium for New Ideas, New Paradigms, and\r\nReflections on Everything to do with Programming and Software (Onward!)\r\n2020][onward20], co-located with the Conference on Object-oriented Programming,\r\nSystems, Languages, and Applications (OOPSLA), pages 108-124, Chicago, United\r\nStates, November 17-18, 2020, ACM DL.  \r\n[![doi][onward20_doi]][onward20_paper] [![Preprint][preprint]][onward20_pdf]\r\n- Jan Ehmueller, Alexander Riese, Hendrik Tjabben, Fabio Niephaus, and Robert\r\nHirschfeld. *Polyglot Code Finder*. In Proceedings of [the Programming\r\nExperience 2020 (PX/20) Workshop][px20], companion volume to International\r\nConference on the Art, Science, and Engineering of Programming (‹Programming›),\r\nco-located with the International Conference on the Art, Science, and Engineering\r\nof Programming (‹Programming›), 6 pages, Genova, Italy, April 1, 2019, ACM DL.  \r\n[![doi][px20_doi]][px20_paper] [![Preprint][preprint]][px20_pdf]\r\n- Alexander Riese, Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld.\r\n*User-defined Interface Mappings for the GraalVM*. In Proceedings of [the\r\nInterconnecting Code Workshop (ICW) 2020][icw20], companion volume to the\r\nInternational Conference on the Art, Science, and Engineering of Programming\r\n(‹Programming›), co-located with the International Conference on the Art,\r\nScience, and Engineering of Programming (‹Programming›), pages 19-22, Porto,\r\nPortugal, March 23, 2020, ACM DL.  \r\n[![doi][icw20_doi]][icw20_paper] [![Preprint][preprint]][icw20_pdf]\r\n\r\n### 2019\r\n- Fabio Niephaus. [*Smalltalk with the GraalVM*][javaadvent19]. In the\r\n  JVM Programming Advent Calendar, December 7, 2019.\r\n- Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld. *GraalSqueak: Toward a\r\nSmalltalk-based Tooling Platform for Polyglot Programming*. In Proceedings of\r\n[the International Conference on Managed Programming Languages and Runtimes\r\n(MPLR) 2019][mplr19], co-located with the Conference on Object-oriented\r\nProgramming, Systems, Languages, and Applications (OOPSLA), 12 pages, Athens,\r\nGreece, October 21, 2019, ACM DL.  \r\n[![doi][mplr19_doi]][mplr19_paper] [![Preprint][preprint]][mplr19_pdf]\r\n- Daniel Stolpe, Tim Felgentreff, Christian Humer, Fabio Niephaus, and Robert\r\nHirschfeld. *Language-independent Development Environment Support for Dynamic\r\nRuntimes*. In Proceedings of [the Dynamic Languages Symposium (DLS)\r\n2019][dls19], co-located with the Conference on Object-oriented Programming,\r\nSystems, Languages, and Applications (OOPSLA), 11 pages, Athens, Greece,\r\nOctober 20, 2019, ACM DL.  \r\n[![doi][dls19_doi]][dls19_paper] [![Preprint][preprint]][dls19_pdf]\r\n- Fabio Niephaus. [*HPI Polyglot Programming Seminar*][pp19_post]. In the\r\n[GraalVM Blog][graalvm_blog], October 11, 2019.\r\n- Fabio Niephaus, Tim Felgentreff, Tobias Pape, and Robert Hirschfeld.\r\n*Efficient Implementation of Smalltalk Activation Records in Language\r\nImplementation Frameworks*. In Proceedings of [the Workshop on Modern Language\r\nRuntimes, Ecosystems, and VMs (MoreVMs) 2019][morevms19], companion volume to\r\nInternational Conference on the Art, Science, and Engineering of Programming\r\n(‹Programming›), co-located with the International Conference on the Art,\r\nScience, and Engineering of Programming (‹Programming›), 3 pages, Genova, Italy,\r\nApril 1, 2019, ACM DL.  \r\n[![doi][morevms19_doi]][morevms19_paper] [![Preprint][preprint]][morevms19_pdf]\r\n- Tobias Pape, Tim Felgentreff, Fabio Niephaus, and Robert Hirschfeld. *Let them\r\nfail: towards VM built-in behavior that falls back to the program*. In\r\nProceedings of [the Salon des Refusés (SDR) 2019 Workshop][sdr19], companion\r\nvolume to International Conference on the Art, Science, and Engineering of\r\nProgramming (‹Programming›), co-located with the International Conference on the\r\nArt, Science, and Engineering of Programming (‹Programming›), 7 pages, Genova,\r\nItaly, April 1, 2019, ACM DL.  \r\n[![doi][sdr19_doi]][sdr19_paper] [![Preprint][preprint]][sdr19_pdf]\r\n- Fabio Niephaus, Eva Krebs, Christian Flach, Jens Lincke, and Robert Hirschfeld.\r\n*PolyJuS: A Squeak/Smalltalk-based Polyglot Notebook System for the GraalVM*. In\r\nProceedings of [the Programming Experience 2019 (PX/19) Workshop][px19],\r\ncompanion volume to International Conference on the Art, Science, and\r\nEngineering of Programming (‹Programming›), co-located with the International\r\nConference on the Art, Science, and Engineering of Programming (‹Programming›),\r\n6 pages, Genova, Italy, April 1, 2019, ACM DL.  \r\n[![doi][px19_doi]][px19_paper] [![Preprint][preprint]][px19_pdf]\r\n\r\n### 2018\r\n- Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld. *GraalSqueak: A Fast\r\nSmalltalk Bytecode Interpreter Written in an AST Interpreter Framework.* In\r\nProceedings of [the Workshop on Implementation, Compilation, Optimization of\r\nObject-Oriented Languages, Programs, and Systems (ICOOOLPS) 2018][icooolps18],\r\nco-located with the European Conference on Object-oriented Programming (ECOOP),\r\nAmsterdam, Netherlands, July 17, 2018, ACM DL.  \r\n[![doi][icooolps18_doi]][icooolps18_paper] [![Preprint][preprint]][icooolps18_pdf]\r\n\r\n\r\n## License\r\n\r\nTruffleSqueak is released under the [MIT license][ts_license].\r\n\r\n\r\n[codacy]: https://app.codacy.com/gh/hpi-swa/trufflesqueak/dashboard\r\n[codacy_coverage]: https://img.shields.io/codacy/coverage/104b3300600346789d604fd269219efe.svg\r\n[codacy_grade]: https://img.shields.io/codacy/grade/104b3300600346789d604fd269219efe.svg\r\n[dls19]: https://conf.researchr.org/home/dls-2019\r\n[dls19_doi]: https://img.shields.io/badge/doi-10.1145/3359619.3359746-blue.svg\r\n[dls19_paper]: https://doi.org/10.1145/3359619.3359746\r\n[dls19_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/StolpeFelgentreffHumerNiephausHirschfeld_2019_LanguageIndependentDevelopmentEnvironmentSupportForDynamicRuntimes_AcmDL.pdf\r\n[eclipse_cs]: https://checkstyle.org/eclipse-cs/\r\n[eclipse_downloads]: https://www.eclipse.org/downloads/\r\n[github_releases]: https://help.github.com/en/github/administering-a-repository/about-releases\r\n[graal]: https://github.com/oracle/graal\r\n[graalvm]: https://www.graalvm.org/\r\n[graalvm_blog]: https://medium.com/graalvm\r\n[graalvm_download]: https://www.graalvm.org/downloads/\r\n[graalvm_updater]: https://www.graalvm.org/docs/reference-manual/install-components/\r\n[graalvm_slack]: https://www.graalvm.org/slack-invitation/\r\n[graalvm_slack_badge]: https://img.shields.io/badge/slack-%23trufflesqueak-active\r\n[icooolps18]: https://2018.ecoop.org/event/icooolps-2018-papers-graalsqueak-a-fast-smalltalk-bytecode-interpreter-written-in-an-ast-interpreter-framework\r\n[icooolps18_doi]: https://img.shields.io/badge/doi-10.1145/3242947.3242948-blue.svg\r\n[icooolps18_paper]: https://doi.org/10.1145/3242947.3242948\r\n[icooolps18_pdf]: https://fniephaus.com/2018/icooolps18-graalsqueak.pdf\r\n[icw20]: https://2020.programming-conference.org/home/icw-2020\r\n[icw20_doi]: https://img.shields.io/badge/doi-10.1145/3397537.3399577-blue.svg\r\n[icw20_paper]: https://dl.acm.org/doi/10.1145/3397537.3399577\r\n[icw20_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/RieseNiephausFelgentreffHirschfeld_2020_UserDefinedInterfaceMappingsForTheGraalVM_AcmDL.pdf\r\n[javaadvent19]: https://www.javaadvent.com/2019/12/smalltalk-with-the-graalvm.html\r\n[morevms19]: https://2019.programming-conference.org/track/MoreVMs-2019\r\n[morevms19_doi]: https://img.shields.io/badge/doi-10.1145/3328433.3328440-blue.svg\r\n[morevms19_paper]: https://doi.org/10.1145/3328433.3328440\r\n[morevms19_pdf]: https://fniephaus.com/2019/morevms19-efficient-activation-records.pdf\r\n[mplr19]: https://conf.researchr.org/home/mplr-2019\r\n[mplr19_doi]: https://img.shields.io/badge/doi-10.1145/3357390.3361024-blue.svg\r\n[mplr19_paper]: https://doi.org/10.1145/3357390.3361024\r\n[mplr19_pdf]: https://fniephaus.com/2019/mplr19-graalsqueak.pdf\r\n[mx]: https://github.com/graalvm/mx\r\n[onward20]: https://2020.splashcon.org/track/splash-2020-Onward-papers\r\n[onward20_doi]: https://img.shields.io/badge/doi-10.1145/3426428.3426919-blue.svg\r\n[onward20_paper]: https://doi.org/10.1145/3426428.3426919\r\n[onward20_pdf]: https://fniephaus.com/2020/onward20-live-programming.pdf\r\n[pp19_post]: https://medium.com/p/3fd06ffa59d2/\r\n[preprint]: https://img.shields.io/badge/preprint-download-blue.svg\r\n[pull_request]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request\r\n[px19]: https://2019.programming-conference.org/track/px-2019-papers\r\n[px19_doi]: https://img.shields.io/badge/doi-10.1145/3328433.3328434-blue.svg\r\n[px19_paper]: https://doi.org/10.1145/3328433.3328434\r\n[px19_pdf]: https://fniephaus.com/2019/px19-polyglot-notebooks.pdf\r\n[px20]: https://2020.programming-conference.org/track/px-2020-papers\r\n[px20_doi]: https://img.shields.io/badge/doi-10.1145/3397537.3397559-blue.svg\r\n[px20_paper]: https://doi.org/10.1145/3397537.3397559\r\n[px20_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/EhmuellerRieseTjabbenNiephausHirschfeld_2020_PolyglotCodeFinder_AcmDL.pdf\r\n[sdr19]: https://2019.programming-conference.org/track/sdr-2019-papers\r\n[sdr19_doi]: https://img.shields.io/badge/doi-10.1145/3328433.3338056-blue.svg\r\n[sdr19_paper]: https://doi.org/10.1145/3328433.3338056\r\n[sdr19_pdf]: https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/PapeFelgentreffNiephausHirschfeld_2019_LetThemFailTowardsVmBuiltInBehaviorThatFallsBackToTheProgram_AcmDL.pdf\r\n[squeak]: https://squeak.org\r\n[squeak_downloads]: https://squeak.org/downloads/\r\n[ts_docs]: https://github.com/hpi-swa/trufflesqueak/tree/main/docs\r\n[ts_dev_docs]: https://github.com/hpi-swa/trufflesqueak/blob/main/docs/development.md\r\n[ts_gh_action]: https://github.com/hpi-swa/trufflesqueak/actions\r\n[ts_gh_action_badge]: https://img.shields.io/github/actions/workflow/status/hpi-swa/trufflesqueak/ci.yml?branch=main\r\n[ts_issues]: https://github.com/hpi-swa/trufflesqueak/issues/new\r\n[ts_latest]: https://github.com/hpi-swa/trufflesqueak/releases/latest\r\n[ts_latest_badge]: https://img.shields.io/github/v/release/hpi-swa/trufflesqueak\r\n[ts_launcher]: https://github.com/hpi-swa/trufflesqueak/blob/main/src/de.hpi.swa.trufflesqueak.launcher/src/de/hpi/swa/trufflesqueak/launcher/TruffleSqueakLauncher.java\r\n[ts_license]: https://github.com/hpi-swa/trufflesqueak/blob/main/LICENSE\r\n[ts_license_badge]: https://img.shields.io/github/license/hpi-swa/trufflesqueak\r\n[ts_logo]: https://user-images.githubusercontent.com/2368856/83736775-67f72280-a652-11ea-9785-35c2a688c0fc.png\r\n[ts_main]: https://github.com/hpi-swa/trufflesqueak/tree/main\r\n[ts_twitter]: https://twitter.com/TruffleSqueak\r\n[ts_twitter_badge]: https://img.shields.io/badge/twitter-%40TruffleSqueak-active\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhpi-swa%2Ftrufflesqueak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhpi-swa%2Ftrufflesqueak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhpi-swa%2Ftrufflesqueak/lists"}