{"id":17059142,"url":"https://github.com/toxicfrog/enceladus","last_synced_at":"2025-10-18T13:35:42.888Z","repository":{"id":1840808,"uuid":"2765276","full_name":"ToxicFrog/Enceladus","owner":"ToxicFrog","description":"A program to 'freeze' a lua script and its supporting (lua) libraries into a self-contained executable.","archived":false,"fork":false,"pushed_at":"2012-06-27T04:16:33.000Z","size":1004,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-26T12:11:52.578Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"publify/publify","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ToxicFrog.png","metadata":{"files":{"readme":"README","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":"2011-11-13T05:41:31.000Z","updated_at":"2025-01-01T12:14:19.000Z","dependencies_parsed_at":"2022-08-20T03:50:58.761Z","dependency_job_id":null,"html_url":"https://github.com/ToxicFrog/Enceladus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2FEnceladus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2FEnceladus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2FEnceladus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ToxicFrog%2FEnceladus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ToxicFrog","download_url":"https://codeload.github.com/ToxicFrog/Enceladus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248610407,"owners_count":21132920,"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":[],"created_at":"2024-10-14T10:32:48.870Z","updated_at":"2025-10-18T13:35:42.798Z","avatar_url":"https://github.com/ToxicFrog.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Enceladus is a program for 'freezing' lua scripts, and their associated (pure- lua) modules, into a single self-contained binary for distribution on linux, windows, or OSX.\n\nIt is inspired by, and similar to, lhf's 'srlua'; unlike srlua, however, it permits the embedding of more than one lua file in a single executable. One will be used as the entry point, and the others will be loaded as-needed when require() is called, using package.path - in effect, a virtual filesystem is created from the packed files.\n\nIt does not, at present, support packing of binary modules (this may be implemented someday) or manually specifying the mapping between module names and file names (this is definitely planned for a later version).\n\n        BUILDING AND INSTALLING\n        \nIf you're on a system with GNU Make and gcc, you can probably just do this:\n\n    (cd build/linux \u0026\u0026 make)\n\nand it'll spit out an 'enceladus' executable (or 'enceladus.exe' if you're on windows).\n\nIf you're using something else, read on.\n        \nA selection of build configurations (for Make, Visual Studio, Code::Blocks, and XCode) are provided in the build/ directory, sorted by platform. Pick the one appropriate to your environment. Not all of these have been tested; bug reports are welcome, but if it's for an IDE I don't have, you'll have to test the fixes yourself.\n\nThe Windows makefile is suitable for use in mingw/MSYS and probably Cygwin environments. If cross-compiling on linux and targeting windows, you should use the windows makefile (with 'mingw32-make' rather than 'make').\n\nIf you want to make changes to the build system, all of these files are generated using the 'premake4' tool, available at [http://industriousone.com/premake]. To make your changes, edit the 'premake4.lua' file and then use 'premake \u003caction\u003e' to regenerate the build configurations you're using; alternately, use 'sh premake.sh' (on systems with sh) to automatically rebuild them all.\n\nTo install enceladus once built, just put it somewhere in your $PATH (windows users: make sure lua5.1.dll goes along with it). Apart from the DLL dependency on windows, it is a self-contained program.\n\n\n        USAGE\n\nTo use enceladus, run the program specifying the names of all of the lua files you want to pack. The first one you specify will be used as the entry point. This will generate a new executable, by default named (script name)-(binary name) - for example, this command:\n\n  enceladus main.lua libfoo.lua libbar.lua\n\nWill generate 'main.lua-enceladus' on linux, and 'main.lua-enceladus.exe' on windows.\n\nNow that embedding is done, you can simply run the generated file and it will act as though you had run the lua script. Command line arguments are passed in using the same protocol as in lua stand-alone, ie, they are available both in (...) at the top level and the 'arg' global.\n\n\n        NOTES ABOUT BINARY MODULES\n        \nEmbedding of dynamically loaded binary modules is not currently supported. It might become supported in a future version if I can come up with a good way of doing it on multiple platforms.\n\nStatic embedding of binary modules is possible (although it requires a recompile and editing of the link settings); enceladus will call 'enceladus_init_static_libs(L)' just after luaL_openlibs. By default this function does nothing; by editing the definition in staticlibs.c and linking against whatever modules you're using as C libraries, you can 'bake' binary modules such as lposix or lfs into the executable at at compile time.\n\nLoading of binary modules at runtime is also possible. Enceladus follows the standard protocol for this: the Linux version is compiled with -rdynamic and loaded modules are expected to resolve symbols against the program loading them, while the windows version comes with a separate lua5.1.dll which expects to be used both by enceladus.exe and any modules it loads. (It should be lua4windows compatible.) I have no idea what protocol is for this on OSX; patches are welcome.\n\n:wrap=soft:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxicfrog%2Fenceladus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoxicfrog%2Fenceladus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxicfrog%2Fenceladus/lists"}