{"id":13572497,"url":"https://github.com/mighty-gerbils/gerbil","last_synced_at":"2026-04-03T20:01:21.680Z","repository":{"id":41444375,"uuid":"50657077","full_name":"mighty-gerbils/gerbil","owner":"mighty-gerbils","description":"Gerbil Scheme","archived":false,"fork":false,"pushed_at":"2026-03-31T20:04:34.000Z","size":246796,"stargazers_count":1245,"open_issues_count":165,"forks_count":119,"subscribers_count":34,"default_branch":"master","last_synced_at":"2026-03-31T22:08:17.139Z","etag":null,"topics":["gambit","gerbil","gerbil-scheme","scheme"],"latest_commit_sha":null,"homepage":"https://cons.io","language":"Scheme","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mighty-gerbils.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE-2.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-01-29T10:58:22.000Z","updated_at":"2026-03-29T05:33:07.000Z","dependencies_parsed_at":"2024-01-01T23:55:04.097Z","dependency_job_id":"346173aa-3653-462c-b1d5-be4db598eb3a","html_url":"https://github.com/mighty-gerbils/gerbil","commit_stats":null,"previous_names":["vyzo/gerbil"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/mighty-gerbils/gerbil","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mighty-gerbils%2Fgerbil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mighty-gerbils%2Fgerbil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mighty-gerbils%2Fgerbil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mighty-gerbils%2Fgerbil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mighty-gerbils","download_url":"https://codeload.github.com/mighty-gerbils/gerbil/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mighty-gerbils%2Fgerbil/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31374051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"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":["gambit","gerbil","gerbil-scheme","scheme"],"created_at":"2024-08-01T14:01:25.173Z","updated_at":"2026-04-03T20:01:21.228Z","avatar_url":"https://github.com/mighty-gerbils.png","language":"Scheme","funding_links":[],"categories":["Scheme"],"sub_categories":[],"readme":"# Gerbil Scheme\n\nGerbil is an opinionated, some might even say tendentious, dialect of\nScheme designed for systems programming. It provides a state of the\nart macro and module system on top of the Gambit runtime and compiler\nand an extensive standard library. One way to think of Gerbil is as the C++ to Marc Feeley's C.\n\nThe macro system is based on quote-syntax, and provides the full\nmeta-syntactic tower with a native implementation of syntax-case.\nIt also provides a full-blown module system, similar to PLT Scheme's\n(sorry, Racket's) modules. The main difference from Racket is that\nGerbil modules are single instantiation, supporting high performance\nahead of time compilation and compiled macros.\n\n\u003c!-- toc --\u003e\n\n- [Installation](#installation)\n- [Using Gerbil](#using-gerbil)\n- [Documentation](#documentation)\n- [License and Copyright](#license-and-copyright)\n- [Epilogue](#epilogue)\n\n\u003c!-- tocstop --\u003e\n\n# Installation\n\nThe source code for Gerbil is hosted on [GitHub](https://github.com/mighty-gerbils/gerbil),\nwith the latest release available in [releases](https://github.com/mighty-gerbils/gerbil/releases).\n\n**If you are on Linux** installation from source is straightforward:\n\n```shell\n$ git clone git@github.com:mighty-gerbils/gerbil.git\n$ cd gerbil\n$ ./configure\n$ make -j4\n$ sudo make install\n```\n\nThis will install Gerbil in `/opt/gerbil`; all you have to do then is\nadd `/opt/gerbil/bin` to your path. Obviously, you can customize the\ninstall prefix by using the `--prefix=/path/to/gerbil/installation`\nconfigure option.\n\n**Note** the default configuration has some dependencies you may need\nto install: sqlite, zlib, and libcrypto/openssl.\nYou can install them in ubuntu with:\n\n```shell\n$ sudo apt install libssl-dev zlib1g-dev libsqlite3-dev\n```\n\n**Note** If you want to install the latest release (v0.18), you can also use the precompiled binary packages for Ubuntu, Debian, Fedora, and CentOS. They are available in the [v0.18 release](https://github.com/mighty-gerbils/gerbil/releases/tag/v0.18) page.\n\n**If you are on MacOS** you can install Gerbil using our [brew formula](https://github.com/mighty-gerbils/homebrew-gerbil):\n\n```shell\n$ brew install mighty-gerbils/gerbil/gerbil-scheme\n```\n\nFor more detailed installation instructions see the [Guide](https://cons.io/guide/).\n\n# Using Gerbil\n\nThe Gerbil interpreter is `gxi`, and the compiler is `gxc`.\n\nIf you want an interactive Gerbil shell just execute the interpreter\ndirectly by running `gxi`.\n\nFor \"hello, world\" see the [Guide](https://cons.io/guide/intro.html#hello-world).\n\n# Documentation\n\nThe [documentation](https://cons.io) is a work in progress, but there are some resources\nthat should get you started:\n\n- The [Introduction to Gerbil](https://cons.io/guide/intro.html) is an introductory guide\n  for seasoned Schemers.\n- The [Getting Started](https://cons.io/guide/getting-started.html) page covers the very basics\n  of setting up your Gerbil installation and writing your first code.\n- The [Gerbil Tutorial](https://cons.io/tutorials/) provides a few hands-on guides\n  on Gerbil programming.\n- The [Gerbil Reference Documentation](https://cons.io/reference/) is the reference documentation\n  for the Gerbil runtime and standard library.\n- See also the [Developing Software with Gerbil](https://cons.io/reference/dev) section in the\n  hyperspec for general software development practices with Gerbil.\n\nThe documentation is automatically rendered online at [cons.io](https://cons.io).\nYou can render it locally by running `doc/build.sh`, which will leave\nthe html output in `doc/.vuepress/dist`; the script uses vuepress and\nrequires npm to be installed.\n\n## Deep Dive\n\nProbably the best way to dive into Gerbil is by reading the sources,\nas all the main language features are exercised in one way or another\nwithin the implementation.\n\nDepending on your inclinations, there are several starting points:\n\n- If you are interested in general purpose programming, then you should look at\n  the [stdlib sources](src/std).\n- If you are interested in Gerbil macrology, then the place to start is the [core prelude](src/gerbil/prelude/core.ss).\n  This is the language that you get in the interpreter and what is available\n  when writing a new module without explicitly specifying a prelude.\n- If you are interested in the Gerbil expander internals, then you should look at\n  the [expander sources](src/gerbil/expander).\n- If you are interested in the Gerbil compiler internals, then you should look at\n  the [compiler sources](src/gerbil/compiler).\n\nFor questions and support, you can find us on gitter in [#gerbil-scheme](https://gitter.im/gerbil-scheme/community).\n\n# License and Copyright\n\n## Source Code\n\nThe source code is distributed with the Gambit license; that means\nthat Gerbil on Gambit is dual licensed under LGPLv2.1 and Apache 2.0.\n\nGerbil's original author and primary maintainer is vyzo, aka in the\nNet as Dimitris Vyzovitis. The obligatory copyright notice, had I\nbothered and polluted everything with more than a (C) vyzo, would read\nlike this:\n\n```\n© 2007-2023 Dimitris Vyzovitis and contributors\nGerbil is Free Software, distributed under the GNU LGPLv2.1 or later\nand the Apache 2.0 license.\n```\n\nThe implementations of srfi 115 and srfi 159 come from Chibi, as these\nare the only available reference implementations. As such, they are\n© Alex Shinn and distributed under a BSD-style license.\n\n## Logo\n\nThe Gerbil Scheme logo is © 2019 Brad Christensen. The logo, its\nvariations, and derivatives found within the official Gerbil Scheme\ncode repository are provided under a royalty-free non-exclusive\nlicense for use by any person or entity wanting to use them solely\nin the context of the Gerbil Scheme programming language, including\nfor commercial use, and grants them the rights to copy, distribute,\ndisplay, and create derivative works so long as those derivatives\nare made available under this same license.\n\nCreators of derivatives are encouraged to offer them for inclusion\nto the official code or associated Gerbil Scheme repository, where\nupon acceptance they will be easier to find and use (for example\nin documentation and acticles) by the community at large.\nFurthermore, a derivative's terms of use will be made available\nby the statements here.\n\nThis license in no way guarantees the availability of the logo, or\nany of its variations or derivitives in the future.\n\n# Epilogue\n\nGerbil had been vyzo's private Scheme for many years, evolved out of a\nset of common macros that were used across different implementations\nand eventually a full-blown PLT macro language for actor oriented\ndistributed programming. As such, there have been multiple backends\nthat supported the evolution of the Gerbil dialect, but vyzo elected\nto base the canonical version of Gerbil on Gambit because it is the\nmost portable, performant and low-level Scheme kernel available.\n\nAt the prompting of some friends (they know who they are), who had\nseen private versions of Gerbil, vyzo decided to release it in public\nwith a clean source-based bootstrap version that bootstraps on gambit\nwith a precompiled version of the macro system and compiler. That\nmeans that the system could be (and now is) entirely self-hosted.\n\nGerbil is under continuous use and development.\nThe core language has been stable for a while, but we are busy porting\nbatteries, adding features, fixing bugs, and expanding the scope of\nsyntactic abstraction.\n\nPatches (even for typos in the comments) are always welcome.\nNo copyright assignment ever, you keep what you contribute.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmighty-gerbils%2Fgerbil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmighty-gerbils%2Fgerbil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmighty-gerbils%2Fgerbil/lists"}