{"id":13628306,"url":"https://github.com/cesquivias/mumbler","last_synced_at":"2026-03-12T07:02:02.880Z","repository":{"id":21279039,"uuid":"24594965","full_name":"cesquivias/mumbler","owner":"cesquivias","description":"My experimental programming language using Truffle","archived":false,"fork":false,"pushed_at":"2020-02-28T18:36:04.000Z","size":360,"stargazers_count":113,"open_issues_count":1,"forks_count":16,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-12-20T08:20:08.423Z","etag":null,"topics":["graalvm","lisp-interpreter","truffle"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cesquivias.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-29T12:51:59.000Z","updated_at":"2025-12-08T11:57:00.000Z","dependencies_parsed_at":"2022-09-02T18:01:08.595Z","dependency_job_id":null,"html_url":"https://github.com/cesquivias/mumbler","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cesquivias/mumbler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cesquivias%2Fmumbler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cesquivias%2Fmumbler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cesquivias%2Fmumbler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cesquivias%2Fmumbler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cesquivias","download_url":"https://codeload.github.com/cesquivias/mumbler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cesquivias%2Fmumbler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30417685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T06:40:58.731Z","status":"ssl_error","status_checked_at":"2026-03-12T06:40:40.296Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["graalvm","lisp-interpreter","truffle"],"created_at":"2024-08-01T22:00:49.757Z","updated_at":"2026-03-12T07:02:02.865Z","avatar_url":"https://github.com/cesquivias.png","language":"Java","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"Mumbler is a lisp programming language I wrote to try out the [[https://www.graalvm.org/][Graal JIT]] for the JVM.\n\n* Mumbler\nMumbler is a very small lisp modeled after Scheme but with far fewer special forms and built-in functions. Here is the \"[[http://cesquivias.github.io/blog/2014/10/13/writing-a-language-in-truffle-part-1-a-simple-slow-interpreter/#mumbler-language][Mumbler language specification]]\".\n\n* Build\nMumbler uses [[http://gradle.org/][Gradle]] as the build system. To build the code simply run\n\n#+begin_src shell-script\n    cd ${MUMBLER_REPO}/lang\n    ./gradlew installDist\n#+end_src\n\n* Run\nMumbler requires a special version of the JVM. You can download a [[https://www.graalvm.org/downloads/][graal JVM]] from Oracle. Mumbler requires version 19.3 or newer.\n\nYou can start Mumbler's REPL from the build directory. Just set ~JAVA_HOME~ to point to the Graal JVM.\n\n#+begin_src shell-script\n    JAVA_HOME=\u003cgraal-vm-dir\u003e ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler\n#+end_src\n\n** Run tests\nThe test/ directory contains several Mumbler scripts that try out different features. To run all the tests:\n\n#+begin_src shell-script\n    ${MUMBLER_REPO}/test/run_tests\n#+end_src\n\nYou can try out individual scripts by starting running Mumbler directly.\n\n#+begin_src shell-script\n  ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler ${MUMBLER_REPO}/test/\u003ca-random-script\u003e.mumbler\n#+end_src\n\nYou can disable tail call optimization.\n\n#+begin_src shell-script\n  ${MUMBLER_REPO}/lang/build/install/mumbler/bin/mumbler --tco=false ${MUMBLER_REPO}/test/\u003ca-random-script\u003e.mumbler\n#+end_src\n\nYou can also run individual scripts using gradle.\n\n#+begin_src shell-script\n    cd ${MUMBLER_REPO}/lang\n    ./gradlew run -PappArgs=\"['/home/jchaloup/development/mumbler/benchmark/fibonacci/fibonacci.mumbler']\"\n    ./gradlew run -PappArgs=\"['/home/jchaloup/development/mumbler/benchmark/fibonacci/fibonacci.mumbler', '--tco=false']\"\n#+end_src\n\n** Run benchmarks\n[[sec:build][Build]] Truffle and Mumbler and [[sec:env-var][set environment variables]].\n\n#+begin_src shell-script\n    ${MUMBLER_REPO}/benchmark/measure \u003cbenchmark-name\u003e\n#+end_src\n\n~benchmark-name~ is the name of the files in one of the directories under ~benchmark~, without the extension, as in the following example.\n\n#+begin_src shell-script\n    ${MUMBLER_REPO}/benchmark/measure ${MUMBLER_REPO}/benchmark/fibonacci/fibonacci\n#+end_src\n\nYou can uncomment the benchmark execution commands at the end of the ~measure~ script in order to benchmark mumbler against other languages than python.\n\n** Set Environment Variables\nMumbler's scripts use two environment variables.\n\n#+begin_example\n    JAVA_HOME : The directory of the Graal VM. Mumbler may run using the default Oracle or OpenJDK JVM, but you won't see the performance gains that Graal provides.\n    MUMBLER_HOME : The path where gradle built and installed Mumbler. It should be under ${MUMBLER_REPO}/lang/build/install/mumbler\n#+end_example\n\nThe ~MUMBLER_REPO~ environment variable referenced here is not used by an scripts. It signifies where the Mumbler repo was cloned on your system.\n\n* License\n\nCopyright © 2014-2020 Cristian Esquivias\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcesquivias%2Fmumbler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcesquivias%2Fmumbler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcesquivias%2Fmumbler/lists"}