{"id":29671439,"url":"https://github.com/anoma/alucard","last_synced_at":"2026-02-05T21:02:34.548Z","repository":{"id":38382841,"uuid":"470585082","full_name":"anoma/alucard","owner":"anoma","description":"A common lisp DSL for writing zero knowledge circuits","archived":false,"fork":false,"pushed_at":"2022-10-19T08:12:49.000Z","size":2432,"stargazers_count":18,"open_issues_count":25,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-22T20:13:28.182Z","etag":null,"topics":["blockchain","zkp","zkproof"],"latest_commit_sha":null,"homepage":"https://anoma.github.io/alucard","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anoma.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-03-16T13:01:34.000Z","updated_at":"2023-10-17T16:01:47.000Z","dependencies_parsed_at":"2023-01-19T15:14:28.489Z","dependency_job_id":null,"html_url":"https://github.com/anoma/alucard","commit_stats":null,"previous_names":["anoma/alucard"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/anoma/alucard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoma%2Falucard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoma%2Falucard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoma%2Falucard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoma%2Falucard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anoma","download_url":"https://codeload.github.com/anoma/alucard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoma%2Falucard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29134231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T20:50:26.975Z","status":"ssl_error","status_checked_at":"2026-02-05T20:49:26.082Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["blockchain","zkp","zkproof"],"created_at":"2025-07-22T20:08:00.995Z","updated_at":"2026-02-05T21:02:33.864Z","avatar_url":"https://github.com/anoma.png","language":"Common Lisp","readme":"* Alu\n** Description\nALucard (Alu) is a high level DSL for writing [[https://en.wikipedia.org/wiki/Zero-knowledge_proof][Zero Knowledge]]\ncircuits. Alu compiles to a constraint agnostic system known as\n[[https://github.com/ZK-Garage/vamp-ir][vamp-ir]] which allows easy integration and deployment into existing\nZero Knowledge stacks or private applications into new systems.\n\nSince Alu is a DSL, it's syntax is heavily inspired from it's host\nlanguage [[https://common-lisp.net/][Common lisp]], extending the language with circuit compilation\ncapabilities. This means that Alucard can use language infrastructure\nlike [[https://fiveam.common-lisp.dev/][FiveAM]] and [[https://www.cliki.net/SWANK][SWANK]] to allow a battle tested interactive developer\nexperience.\n** Quick Start\n[[https://hackmd.io/KTN_7tyGTe2RvJ5-aC4rBw][A friendly introduction can be found here]]\n** Documentation\nThe most complete documentation is the [[https://hackmd.io/emeUBiYoSqmJ95Ls2wsrMQ][Alucard Reference Manual]].\n\n- [[https://hackmd.io/emeUBiYoSqmJ95Ls2wsrMQ][Reference Manual]]\n- [[file:doc/spec.md][Specification]]\n- [[file:doc/using-alucard.md][Syntax Guide]]\n\nFor those curious about test coverage, the test coverage of the\ncompiler can be found [[https://anoma.github.io/juvix-circuits/][here]].\n** Editor Integration\nSince Alucard Relies on Common lisp, we support all major editors. For\nthe best experience Emacs is recommend though the other editors work\nwell!\n*** Emacs\nWith Emacs you have a few choices for easy editor integration, either:\n- [[https://github.com/joaotavora/sly][Sly]]\n- [[https://github.com/slime/slime][Slime]]\n\nThen you just have to set the default lisp program to alucard.\n#+begin_src lisp\n  (setq inferior-lisp-program \"alu.image\")\n#+end_src\n\nIf you don't wish for the default implementation to be alucard, then\n=alu.image= can be passed in manually when calling =M-x sly= (In helm\nthis is =C-u= before running the command)\n*** VSCode\n[[https://lispcookbook.github.io/cl-cookbook/vscode-alive.html][Alive]]\n\nWith [[https://lispcookbook.github.io/cl-cookbook/vscode-alive.html][Alive]] Alucard integration is quite simple, just grab the\nextension off the marketplace and then edit the settings.json with\n\nHowever the following dependencies will also be needed\n- [[https://github.com/nobody-famous/alive-lsp][alive-lsp]]\n  + This can be installed with\n  + =ros install \"nobody-famous/alive-lsp\"=\n\n#+begin_src javascript\n  {\n      \"alive.lsp.startCommand\": [\n          \"alu.image\",\n          \"-a\"\n      ]\n  }\n#+end_src\n\nwhen now connecting to a =.lisp= file, alucard will automatically be\nbooted up. Note that to get =alucard= in the right package, in the\nbottom left prompt in the =REPL= tab, you should click on the\n=cl-user= and type in =aluser= to set the system in the right package.\n*** Vim\n[[https://github.com/vlime/vlime][vlime]]\n[TODO]\n*** Terminal\nAlucard can be launched from the terminal and attach to your editor as\nwell. This can be done by launching the program with =-s= for swank or\n=-y= for sly. Once done you should be given a REPL on the terminal\nalong with the message\n#+begin_src lisp\n  ;; Swank started at port: 4005.\n#+end_src\nThis means that you can hookup your editor of choice to localhost:4005\nvia =sly-connect= or =alive attach to REPL=.\n** For Developers\n*** Test Coverage\n- Test coverage can be found [[https://anoma.github.io/juvix-circuits/][here]].\n*** Setting up the Developer Environment\n_Alucard works on many different implementations of CL, namely_\n  + SBCL\n  + CCL\n  + ECL\n\nTo quickly get started with Alucard development, one can run the\nfollowing commands from their lisp REPL\n\n- =(load \"alu.asd\")=\n- =(ql:quickload :alu/test)=\n  + If one is using =CLPM= then you should run =(activate-project)=\n    instead.\n- =(asdf:test-system :alu)=\n\nIf there was an error in the above commands, look at the section below\nfor some common solutions.\n\nIf the commands work, then you can start hacking on Alucard!\n\nCurrently binary extraction does not work with SBCL, but it is\nperfectly fit to load the environment like any normal CL library!\n\n**** Errors with SBCL\nSBCL by default does not ship a new enough version of ASDF, and you\nmay encounter an error like\n#+begin_src lisp\n  * (ql:quickload :alu)\n\n  debugger invoked on a ASDF/FIND-COMPONENT:MISSING-DEPENDENCY-OF-VERSION in thread\n  #\u003cTHREAD \"main thread\" RUNNING {1004E58073}\u003e:\n    Component \"asdf\" does not match version 3.3.5, required by #\u003cSYSTEM \"alu\"\u003e\n\n  Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.\n\n  restarts (invokable by number or by possibly-abbreviated name):\n    0: [ABORT                  ] Give up on \"alu\"\n    1: [REGISTER-LOCAL-PROJECTS] Register local projects and try again.\n    2:                           Exit debugger, returning to top level.\n\n  (QUICKLISP-CLIENT::AUTOLOAD-SYSTEM-AND-DEPENDENCIES \"alu\" :PROMPT NIL)\n  source: (ERROR C)\n#+end_src\nIf this occurs you may need to update your asdf to a newer version.\n\n1. Clone the repo: =git clone https://gitlab.common-lisp.net/asdf/asdf.git=\n2. =cd asdf=\n3. =git checkout 3.3.5.8= ([[https://gitlab.common-lisp.net/asdf/asdf/-/tags][any tag in =3.3.5.*= works]])\n4. =make=\n5. In the lisp REPL: =(load \"/path/to/asdf/build/asdf.lisp\")=\n6. put =(load \"/path/to/asdf/build/asdf.lisp\")= in your =~/.sbclrc=\n7. rerun the command that triggered the error\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoma%2Falucard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanoma%2Falucard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoma%2Falucard/lists"}