# Kitsch
So, I've been working on a secret thing, and told pretty much nobody about it! I guess it's time to start posting about it so I can get some eyes on it.
I was honestly SICK about LuaRocks, it tends to break, and it's overall very hacky. I don't like how it's global-first and it has a heavy reliance on stuff like the C compiler just to build dependencies, so I decided to build Kitsch, an off-kilter kit of tools to vendor dependencies, manage them, and to create executable binaries out of your projects.
Instead of relying hard on C, it relies hard on FFI. Kitsch keeps itself simple by NOT knowing exactly how to build anything, instead, it just tells you that a certain set of libraries are required for your project to work and uses dlopen to plug into these (and implements a fallback for static musl builds).
It knows how to fetch archives of the internet, how to fetch the latest release to a git repo, it supports Forgejo, Gitlab, Github, Gitea (though that's cheating), and Sourcehut. It knows how to package your software, and it knows how to download runtime binaries it can either directly run your software on, or package them as. You just tell it to "bundle", and it will download everything it needs (packages, the runtime, with hashing), and poop out a binary for any target you want.
Kitsch (as in the runtime, and the tooling) is written in Zig, with many of its bundled features piggybacking off the great tooling used for the Zig compiler and Zig "package manager"
I still don't think it's 100% ready for production, but I am approaching a state where I can feel like it's good to start creating Kitsch packages.
My roadmap is the following:
- Add transparent async I/O and "tasks", with coroutines and no polling, to the runtime itself.
- Create a separate set of (optional) packages that abstract over the C standard library to implement things such as Sockets and Filesystem operations
- Create a cutesy website for the thing, and publish it under TSN
- Ask fellow Lua users to join!
I will keep y'all updated on this, and I am not confident with sharing binaries just yet, but one of these days I'm going to drop a tutorial on how to get it running :)
Thanks for reading.
#lua #zig #programming #packageManager
So, I've been working on a secret thing, and told pretty much nobody about it! I guess it's time to start posting about it so I can get some eyes on it.
I was honestly SICK about LuaRocks, it tends to break, and it's overall very hacky. I don't like how it's global-first and it has a heavy reliance on stuff like the C compiler just to build dependencies, so I decided to build Kitsch, an off-kilter kit of tools to vendor dependencies, manage them, and to create executable binaries out of your projects.
Instead of relying hard on C, it relies hard on FFI. Kitsch keeps itself simple by NOT knowing exactly how to build anything, instead, it just tells you that a certain set of libraries are required for your project to work and uses dlopen to plug into these (and implements a fallback for static musl builds).
It knows how to fetch archives of the internet, how to fetch the latest release to a git repo, it supports Forgejo, Gitlab, Github, Gitea (though that's cheating), and Sourcehut. It knows how to package your software, and it knows how to download runtime binaries it can either directly run your software on, or package them as. You just tell it to "bundle", and it will download everything it needs (packages, the runtime, with hashing), and poop out a binary for any target you want.
Kitsch (as in the runtime, and the tooling) is written in Zig, with many of its bundled features piggybacking off the great tooling used for the Zig compiler and Zig "package manager"
I still don't think it's 100% ready for production, but I am approaching a state where I can feel like it's good to start creating Kitsch packages.
My roadmap is the following:
- Add transparent async I/O and "tasks", with coroutines and no polling, to the runtime itself.
- Create a separate set of (optional) packages that abstract over the C standard library to implement things such as Sockets and Filesystem operations
- Create a cutesy website for the thing, and publish it under TSN
- Ask fellow Lua users to join!
I will keep y'all updated on this, and I am not confident with sharing binaries just yet, but one of these days I'm going to drop a tutorial on how to get it running :)
Thanks for reading.
#lua #zig #programming #packageManager