{"id":26020165,"url":"https://github.com/yamacir-kit/meevax","last_synced_at":"2026-02-23T13:28:43.846Z","repository":{"id":35485781,"uuid":"147609776","full_name":"yamacir-kit/meevax","owner":"yamacir-kit","description":"A programmable programming language","archived":false,"fork":false,"pushed_at":"2025-11-16T13:36:11.000Z","size":6805,"stargazers_count":23,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-11-16T14:27:49.919Z","etag":null,"topics":["lisp","programming-language","r7rs-small","scheme"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yamacir-kit.png","metadata":{"files":{"readme":"README.md","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,"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":"2018-09-06T03:01:15.000Z","updated_at":"2025-08-17T08:58:08.000Z","dependencies_parsed_at":"2023-10-15T03:43:32.665Z","dependency_job_id":"783248b1-a9b4-4f7b-aded-49ce6e7b59bb","html_url":"https://github.com/yamacir-kit/meevax","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/yamacir-kit/meevax","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamacir-kit%2Fmeevax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamacir-kit%2Fmeevax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamacir-kit%2Fmeevax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamacir-kit%2Fmeevax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yamacir-kit","download_url":"https://codeload.github.com/yamacir-kit/meevax/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamacir-kit%2Fmeevax/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29743767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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":["lisp","programming-language","r7rs-small","scheme"],"created_at":"2025-03-06T07:59:28.937Z","updated_at":"2026-02-23T13:28:43.831Z","avatar_url":"https://github.com/yamacir-kit.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\n\u003e Programming languages should be designed not by piling feature on top of\n\u003e feature, but by removing the weaknesses and restrictions that make additional\n\u003e features appear necessary.\n\u003e \u003cdiv align=\"right\"\u003eRevised\u003csup\u003e7\u003c/sup\u003e Report on the Algorithmic Language Scheme\u003c/div\u003e\n\nMeevax is an implementation of Lisp-1 programming language, supporting the\nlatest [Scheme](http://www.scheme-reports.org/) language standard and some\n[SRFI](https://srfi.schemers.org/)s (SRFI; Scheme requests for implementation).\nThis implementation is focused on integration with modern C++ and practicality:\nit not only works as an interpreter with support for the latest Scheme\nstandard, but also provides a flexible Lisp-1 kernel as a C++ library. The\nlibrary is installed as a CMake package for [easy\nlinking](./example/CMakeLists.txt), and [any C++ classes can be used from\nLisp-1 scripts](./example/example.ss) [via simple stubs](example/example.cpp).\n\n### Features\n\n- Traditional SECD machine [[2](#Landin-1964)].\n- Low-level hygienic macro system, known as *syntactic closures*\n  [[4](#Bawden-and-Rees-1988), [6](#Hanson-1991)] and *explicit renaming*\n  [[5](#Clinger-1991)]. For these, the well-known macro transformers\n  `sc-macro-transformer`, `rsc-macro-transformer` and `er-macro-transformer`\n  from the library [`(meevax macro-transformer)`](./basis/meevax.ss) are\n  provided. Note that these are non-Scheme standards.\n- C++ friendly precise garbage collection [[10](#Kempf-2001a),\n  [11](#Kempf-2001b)]\n\n### Standards\n\nMeevax can be used as an interpreter that supports the Scheme standard specified by the following report:\n\n- Revised\u003csup\u003e4\u003c/sup\u003e Report on the Algorithmic Language Scheme (R4RS) [[5](#Clinger-and-Rees-1991a)]\n- Revised\u003csup\u003e5\u003c/sup\u003e Report on the Algorithmic Language Scheme (R5RS) [[9](#Kelsey-Clinger-and-Rees-1998)]\n- Revised\u003csup\u003e7\u003c/sup\u003e Report on the Algorithmic Language Scheme (R7RS) [[13](#Shinn-Cowan-and-Gleckler-2013)]\n\nProcedures for each standard are provided by the following R7RS-style libraries:\n\n| Language | Library name |\n|:--------:|--------------|\n| R4RS     | [`(scheme r4rs)`](./basis/r4rs.ss)\n| R5RS     | [`(scheme r5rs)`](./basis/r5rs.ss)\n| R7RS     | [`(scheme base)`](./basis/r7rs.ss) [`(scheme bitwise)`](./basis/r7rs.ss) [`(scheme box)`](./basis/r7rs.ss) [`(scheme case-lambda)`](./basis/r7rs.ss) [`(scheme char)`](./basis/r7rs.ss) [`(scheme complex)`](./basis/r7rs.ss) [`(scheme cxr)`](./basis/r7rs.ss) [`(scheme division)`](./basis/r7rs.ss) [`(scheme eval)`](./basis/r7rs.ss) [`(scheme file)`](./basis/r7rs.ss) [`(scheme fixnum)`](./basis/r7rs.ss) [`(scheme flonum)`](./basis/r7rs.ss) [`(scheme inexact)`](./basis/r7rs.ss) [`(scheme lazy)`](./basis/r7rs.ss) [`(scheme list)`](./basis/r7rs.ss) [`(scheme load)`](./basis/r7rs.ss) [`(scheme process-context)`](./basis/r7rs.ss) [`(scheme read)`](./basis/r7rs.ss) [`(scheme repl)`](./basis/r7rs.ss) [`(scheme time)`](./basis/r7rs.ss) [`(scheme write)`](./basis/r7rs.ss)\n\n### SRFIs\n\n| Number                                                  | Title                                                  | Library name                        | Note                                   |\n|--------------------------------------------------------:|--------------------------------------------------------|-------------------------------------|----------------------------------------|\n| [  0](https://srfi.schemers.org/srfi-0/srfi-0.html)     | Feature-based conditional expansion construct          | [`(srfi 0)`](./basis/srfi-0.ss)     | R7RS 4.2.1                             |\n| [  1](https://srfi.schemers.org/srfi-1/srfi-1.html)     | List Library                                           | [`(srfi 1)`](./basis/srfi-1.ss)     | [`(scheme list)`](./basis/r7rs.ss)     |\n| [  4](https://srfi.schemers.org/srfi-4/srfi-4.html)     | Homogeneous numeric vector datatypes                   | [`(srfi 4)`](./basis/srfi-4.ss)     | R7RS 6.9                               |\n| [  6](https://srfi.schemers.org/srfi-6/srfi-6.html)     | Basic String Ports                                     | [`(srfi 6)`](./basis/srfi-6.ss)     | R7RS 6.13                              |\n| [  8](https://srfi.schemers.org/srfi-8/srfi-8.html)     | receive: Binding to multiple values                    | [`(srfi 8)`](./basis/srfi-8.ss)     |                                        |\n| [  9](https://srfi.schemers.org/srfi-9/srfi-9.html)     | Defining Record Types                                  | [`(srfi 9)`](./basis/srfi-9.ss)     | R7RS 5.5                               |\n| [ 10](https://srfi.schemers.org/srfi-10/srfi-10.html)   | #, external form                                       |                                     |                                        |\n| [ 11](https://srfi.schemers.org/srfi-11/srfi-11.html)   | Syntax for receiving multiple values                   | [`(srfi 11)`](./basis/srfi-11.ss)   | R7RS 4.2.2                             |\n| [ 16](https://srfi.schemers.org/srfi-16/srfi-16.html)   | Syntax for procedures of variable arity                | [`(srfi 16)`](./basis/srfi-16.ss)   | R7RS 4.2.9                             |\n| [ 23](https://srfi.schemers.org/srfi-23/srfi-23.html)   | Error reporting mechanism                              | [`(srfi 23)`](./basis/srfi-23.ss)   | R7RS 6.11                              |\n| [ 30](https://srfi.schemers.org/srfi-30/srfi-30.html)   | Nested Multi-line Comments                             |                                     | R7RS 2.2                               |\n| [ 31](https://srfi.schemers.org/srfi-31/srfi-31.html)   | A special form rec for recursive evaluation            | [`(srfi 31)`](./basis/srfi-31.ss)   |                                        |\n| [ 34](https://srfi.schemers.org/srfi-34/srfi-34.html)   | Exception Handling for Programs                        | [`(srfi 34)`](./basis/srfi-34.ss)   | R7RS 6.11                              |\n| [ 38](https://srfi.schemers.org/srfi-38/srfi-38.html)   | External Representation for Data With Shared Structure | [`(srfi 38)`](./basis/srfi-38.ss)   | R7RS 6.13.3                            |\n| [ 39](https://srfi.schemers.org/srfi-39/srfi-39.html)   | Parameter objects                                      | [`(srfi 39)`](./basis/srfi-39.ss)   | R7RS 4.2.6                             |\n| [ 45](https://srfi.schemers.org/srfi-45/srfi-45.html)   | Primitives for Expressing Iterative Lazy Algorithms    | [`(srfi 45)`](./basis/srfi-45.ss)   | R7RS 4.2.5                             |\n| [ 62](https://srfi.schemers.org/srfi-62/srfi-62.html)   | S-expression comments                                  |                                     | R7RS 2.2                               |\n| [ 78](https://srfi.schemers.org/srfi-78/srfi-78.html)   | Lightweight testing                                    | [`(srfi 78)`](./basis/srfi-78.ss)   | Except `check-ec`                      |\n| [ 87](https://srfi.schemers.org/srfi-87/srfi-87.html)   | =\u003e in case clauses                                     |                                     | R7RS 4.2.1                             |\n| [ 98](https://srfi.schemers.org/srfi-98/srfi-98.html)   | An interface to access environment variables           | [`(srfi 98)`](./basis/srfi-98.ss)   | R7RS 6.14                              |\n| [111](https://srfi.schemers.org/srfi-111/srfi-111.html) | Boxes                                                  | [`(srfi 111)`](./basis/srfi-111.ss) | [`(scheme box)`](./basis/r7rs.ss)      |\n| [141](https://srfi.schemers.org/srfi-141/srfi-141.html) | Integer division                                       | [`(srfi 141)`](./basis/srfi-141.ss) | [`(scheme division)`](./basis/r7rs.ss) |\n| [143](https://srfi.schemers.org/srfi-143/srfi-143.html) | Fixnums                                                | [`(srfi 143)`](./basis/srfi-143.ss) | [`(scheme fixnum)`](./basis/r7rs.ss)   |\n| [144](https://srfi.schemers.org/srfi-144/srfi-144.html) | Flonums                                                | [`(srfi 144)`](./basis/srfi-144.ss) | [`(scheme flonum)`](./basis/r7rs.ss)   |\n| [149](https://srfi.schemers.org/srfi-149/srfi-149.html) | Basic syntax-rules template extensions                 | [`(srfi 149)`](./basis/srfi-149.ss) | R7RS 4.3.2                             |\n| [151](https://srfi.schemers.org/srfi-151/srfi-151.html) | Bitwise Operations                                     | [`(srfi 151)`](./basis/srfi-151.ss) | [`(scheme bitwise)`](./basis/r7rs.ss)  |\n\n## Installation\n\n### Requirements\n\n- [GCC](https://gcc.gnu.org/) (\u003e= 11.4.0) or [Clang](https://clang.llvm.org/) (\u003e= 14.0.0)\n- [CMake](https://cmake.org/) (\u003e= 3.22.1)\n- [GNU Make](http://savannah.gnu.org/projects/make)\n- [GNU Binutils](https://www.gnu.org/software/binutils/)\n- [GNU Multiple Precision Arithmetic Library (GMP)](https://gmplib.org/)\n\n### Releases\n\nLatest release is [here](https://github.com/yamacir-kit/meevax/releases).\n\n### Instruction\n\nFirst, generate a Makefile using CMake with the following command:\n\n``` bash\ncmake -B build -DCMAKE_BUILD_TYPE=Release\ncd build\n```\n\nThen, select one of the following targets and `make` it according to your purpose. In most cases, `make install` will be the one you choose.\n\n| Target      | Description\n|-------------|-------------\n| `all`       | Build shared-library `libmeevax.0.5.369.so` and executable `meevax`.\n| `install`   | Copy files into `/usr/local` directly.\n| `package`   | Generate debian package `meevax_0.5.369_amd64.deb` (only Ubuntu). The generated package can be installed by `sudo apt install build/meevax_0.5.369_amd64.deb`.\n| `test`      | Test executable `meevax`. This target requires Valgrind to be installed.\n| `uninstall` | Remove files copied to `/usr/local` directly by target `install`.\n\n## Usage\n\n```\nUsage:\n  meevax [OPTION...] [FILE...]\n\nOptions:\n  -e, --evaluate=STRING  read and evaluate STRING on interaction-environment\n  -h, --help             display this help and exit\n  -i, --interactive      enter an interactive session\n  -l, --load=FILE        load FILE into interaction-environment\n  -v, --version          display version information and exit\n  -w, --write=STRING     same as `(write (read STRING))`\n```\n\n## License\n\nSee [LICENSE](./LICENSE).\n\n## References\n\n[\u003cspan id=\"McCarthy-1960\"\u003e1\u003c/span\u003e] John McCarthy. [Recursive functions of symbolic expressions and their computation by machine, Part I](https://dl.acm.org/doi/10.1145/367177.367199). *[Communications of the ACM](https://dl.acm.org/toc/cacm/1960/3/4)*, 3(4):184--195, 1960.\n\n[\u003cspan id=\"Landin-1964\"\u003e2\u003c/span\u003e] Peter J. Landin. [The Mechanical Evaluation of Expressions](https://academic.oup.com/comjnl/article/6/4/308/375725). *[The Computor Journal](https://academic.oup.com/comjnl/issue/6/4)*, 6(4):308--320, 1964.\n\n[\u003cspan id=\"Henderson-1980\"\u003e3\u003c/span\u003e] Peter Henderson. *[Functional Programming: Application and Implementation](https://archive.org/details/functionalprogra0000hend/mode/2up)*. Prentice Hall, 1980.\n\n[\u003cspan id=\"Bawden-and-Rees-1988\"\u003e4\u003c/span\u003e] Alan Bawden and Jonathan Rees. [Syntactic Closures](https://dl.acm.org/doi/10.1145/62678.62687). In *[LFP '88: Proceedings of the 1988 ACM Conference on LISP and Functional Programming](https://dl.acm.org/doi/proceedings/10.1145/62678)*, pages 86--95, 1988.\n\n[\u003cspan id=\"Clinger-and-Rees-1991a\"\u003e5\u003c/span\u003e] William Clinger and Jonathan Rees (Editors). [Revised\u003csup\u003e4\u003c/sup\u003e Report on the Algorithmic Language Scheme](https://dl.acm.org/doi/10.1145/382130.382133). *[ACM SIGPLAN LISP Pointers](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/3)*, IV(3):1--55, 1991.\n\n[\u003cspan id=\"Hanson-1991\"\u003e6\u003c/span\u003e] Chris Hanson. [A Syntactic Closures Macro Facility](https://dl.acm.org/doi/10.1145/1317265.1317267). *[ACM SIGPLAN LISP Pointers](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/4)*, IV(4):9--16, 1991.\n\n[\u003cspan id=\"Clinger-1991\"\u003e7\u003c/span\u003e] William Clinger. [Hygienic Macros Through Explicit Renaming](https://dl.acm.org/doi/10.1145/1317265.1317269). *[ACM SIGPLAN LISP Pointers](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/4)*, IV(4):25--28, 1991.\n\n[\u003cspan id=\"Clinger-and-Rees-1991b\"\u003e8\u003c/span\u003e] William Clinger and Jonathan Rees. [Macros That Work](https://dl.acm.org/doi/10.1145/99583.99607). In *[POPL '91: Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages](https://dl.acm.org/doi/proceedings/10.1145/99583)*, pages 155--162, 1991.\n\n[\u003cspan id=\"Kelsey-Clinger-and-Rees-1998\"\u003e9\u003c/span\u003e] Rechard Kelsey, William Clinger, and Jonathan Rees (Editors). [Revised\u003csup\u003e5\u003c/sup\u003e Report on the Algorithmic Language Scheme](https://dl.acm.org/doi/10.1145/290229.290234). *[ACM SIGPLAN Notices](https://dl.acm.org/toc/sigplan/1998/33/9)*, 33(9):26--76, 1998.\n\n[\u003cspan id=\"Kempf-2001a\"\u003e10\u003c/span\u003e] William E. Kempf. [A garbage collection framework for C++](https://www.codeproject.com/Articles/912/A-garbage-collection-framework-for-C), 2001.\n\n[\u003cspan id=\"Kempf-2001b\"\u003e11\u003c/span\u003e] William E. Kempf. [A garbage collection framework for C++ - Part II](https://www.codeproject.com/Articles/938/A-garbage-collection-framework-for-C-Part-II), 2001.\n\n[\u003cspan id=\"Adams-and-Dybvig-2008\"\u003e12\u003c/span\u003e] Michael D. Adams and R. Kent Dybvig. [Efficient Nondestructive Equality Checking for Trees and Graphs](https://dl.acm.org/doi/10.1145/1411204.1411230). In *[ICFP '08: Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming](https://dl.acm.org/doi/proceedings/10.1145/1411204)*, pages 179--188, 2008.\n\n[\u003cspan id=\"Shinn-Cowan-and-Gleckler-2013\"\u003e13\u003c/span\u003e] Alex Shinn, John Cowan, and Arthur A. Gleckler (Editors). [Revised\u003csup\u003e7\u003c/sup\u003e Report on the Algorithmic Language Scheme](https://standards.scheme.org/official/r7rs.pdf). Technical report, http://www.scheme-reports.org/, 2013.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamacir-kit%2Fmeevax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyamacir-kit%2Fmeevax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamacir-kit%2Fmeevax/lists"}