{"id":17689764,"url":"https://github.com/vitovan/cl-sucker","last_synced_at":"2026-01-08T16:33:47.024Z","repository":{"id":145249545,"uuid":"451100139","full_name":"VitoVan/cl-sucker","owner":"VitoVan","description":"Sucker's single file binary creator","archived":false,"fork":false,"pushed_at":"2022-02-08T03:34:07.000Z","size":42,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-06T02:43:41.666Z","etag":null,"topics":["common-lisp","single-binary","sucker"],"latest_commit_sha":null,"homepage":"","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/VitoVan.png","metadata":{"files":{"readme":"README.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-23T12:40:18.000Z","updated_at":"2024-03-01T21:34:16.000Z","dependencies_parsed_at":"2023-04-14T06:06:48.355Z","dependency_job_id":null,"html_url":"https://github.com/VitoVan/cl-sucker","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitoVan%2Fcl-sucker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitoVan%2Fcl-sucker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitoVan%2Fcl-sucker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitoVan%2Fcl-sucker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VitoVan","download_url":"https://codeload.github.com/VitoVan/cl-sucker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246385416,"owners_count":20768672,"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":["common-lisp","single-binary","sucker"],"created_at":"2024-10-24T11:48:49.304Z","updated_at":"2026-01-08T16:33:41.972Z","avatar_url":"https://github.com/VitoVan.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![Icon](sucker.png) cl-sucker\n[![CI](https://github.com/VitoVan/cl-sucker/actions/workflows/main.yml/badge.svg)](https://github.com/VitoVan/cl-sucker/actions/workflows/main.yml) [![platform support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-blue.svg)](https://github.com/VitoVan/cl-sucker/releases/latest)\n\nSucker's single file binary creator.\n\n## How to use?\n\n```bash\nsucker \u003cinclude-directory\u003e \u003cexecutable-file\u003e\n\nUsages:\n\n    lnx-sucker ./supergame/ ./supergame/bin/run\n\n    mac-sucker ./supergame/ ./supergame/bin/run\n\n    win-sucker.exe ./somevirus/ ./somevirus/diddle.exe\n```\n\nYou will get a file named `puker` in the current directory, send that file to your users, then they will be happy.\n\n## Where to download?\n\nhttps://github.com/VitoVan/cl-sucker/releases/latest\n\nThe higher number suffix, the higher suckabilities and much more suckfulness.\n\n## How it works?\n\n1. Suck\n\n   Loads everything in the `include-directory` recursively into memory, and dump itself as an executable lisp image.\n\n2. Puke\n\n   Writes everything loaded to the local disk, and execute the `executable-file` set when sucking.\n\n## Is it free?\n\nYou know, this cl-sucker mechanism sucks, so you just DO WHAT THE FUCK YOU WANT TO.\n\nThis program is distributed WITHOUT ANY WARRANTY, you really SHOULD NOT use it unless you can't find any other better alternatives.\n\n## Will it fuck up my users' computer?\n\nIt depends on you.\n\nThe only shits puked out by cl-sucker is located at:\n\n```lisp\n(defparameter *cl-sucker-dir*\n  #+darwin \"~/.local/rekcus/cache/\"\n  #+linux \"~/.local/share/rekcus/cache/\"\n  #+win32 \"~/AppData/Local/rekcus/cache/\")\n```\n\n## The generated executable is sooooooo big!\n\nThat should be called 'Super Cool': https://youtu.be/M7vkau14LDI?t=361\n\n## Heap exhausted?\n\nThat means you are sucking to many files, please try the 1024 or higher version, they got higher suckabilities, and much more suckfulness.\n\n## Advanced usage?\n\nYou can write your own hooks:\n\n1. after-suck\n2. after-puke\n\nCheck [ordinary-sucker](https://github.com/VitoVan/cl-sucker/blob/main/ordinary-sucker.lisp) for more details.\n\nPut your code in a file called `holy-sucker.lisp` in the same directory with `sucker`, and it will be loaded automatically.\n\nThere are also two ENVs you can use:\n\n```bash\n# VERBOSE MODE, default: True, set it to FALSE to disable verbose mode\nCL_SUCKER_GIBBERISH=NIL\n# HOLY FILE location, default: holy-sucker.lisp, set it to any file you want\nCL_SUCKER_HOLYFILE=NIL\n```\n\n## Supreme usage?\n\nYou do not actually need to download the binary sucker, write your own `holy-sucker.lisp`, and in the same directory:\n\n```bash\nsbcl --eval \"(ql:quickload 'your-awesome-shit)\" \\\n     --eval \"(ql:quickload 'cl-sucker)\" \\\n     --eval \"(cl-sucker:entry)\"\n```\n\n## How to build?\n\n```bash\ngit clone https://github.com/VitoVan/cl-sucker.git ~/quicklisp/local-projects/cl-sucker\n\nsbcl --disable-debugger \\\n     --eval \"(ql:quickload 'cl-sucker)\" \\\n     --eval \"(asdf:make :cl-sucker)\"\n\nfile ~/quicklisp/local-projects/cl-sucker/sucker\n```\n\n[![Lisp Caution](http://www.lisperati.com/lisplogo_warning2_256.png)](http://www.lisperati.com/logo.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitovan%2Fcl-sucker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvitovan%2Fcl-sucker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitovan%2Fcl-sucker/lists"}