4 ms·
Have you tried Cosmopolitan perl? (https://computoid.com/APPerl/ https://computoid.com/APPerl/) Now that APPerl XS support has improved, I want to play again w
by csdvrx 3y ago
Have you tried Cosmopolitan perl? (https://computoid.com/APPerl/ https://computoid.com/APPerl/)
Now that APPerl XS support has improved, I want to play again with it again.
Earlier this year, I did fatpack few things in a "dirty" way: by adding them to APPerl.
Still, this gives you a perl.com working anywhere, with all the modules you need, executing by default the payload of your choice.
I had a lot of fun writing a very barebonne webserver (https://github.com/csdvrx/PerlPleBean https://github.com/csdvrx/PerlPleBean), along with a few side utils to do mDNS to expose the webserserver on .local (https://github.com/csdvrx/PerlPleBean/blob/main/experiments/bonjour-server.pl https://github.com/csdvrx/PerlPleBean/blob/main/experiments/...), run perl scripts on uploaded files etc
Someone with your experience could certainly do many more interesting things with APPerl :)
- mst 3y agofatpacking bolts the source code untouched onto the front in a way that leaves you a single readable pure perl file - and is limited to pure perl modules as a deliberate decision to keep things simple and clear even if you've never encountered a fatpacked script before. Well, also because trying to pack XS is a freaking nightmare - that way would lie recreating PAR and Audrey's busy being a minister in Taiwan's government so generally not easy for me to consult these days. Ok, I do actually have a hilariously awful trick that manages to wrap DynaLoader to read from a Base64 encoded .so that's inlined into the fatpack but that was more a "wondering if I could" thing than something I've ever felt the urge to actually use in anger so I've (so far) resisted the siren song of CPANing it anyway because people have an unfortunate tendency to forget that I, too, release things that are terrible ideas sometimes. (though being able to use XS modules with a single file you squirt over an ssh connection ala Object::Remote without needing to write anything to disk is kinda fun, especially when you do it with DBD::SQLite ;) APPerl sounds like it could be awesome, App::staticperl is the closest to it I've looked at so far, though since APPerl definitely wants to write to a non-noexec filesystem I wouldn't be surprised if I there are cases where if I had that and a toolchain available I'd end up using it to run Perl::Build to bootstrap a more normal perl and then go from there. Either way, thank you very much for pointing out APPerl's existence to me. Even if I don't end up using it myself, having it in my mental index of available crazy things will almost certainly eventually result in my suggesting it to somebody else who'll find it the least insane way of getting the results they need :D
- csdvrx 3y ago> Audrey's busy being a minister in Taiwan's government so generally not easy for me to consult these days. That must be quite a timesink lol :) > Ok, I do actually have a hilariously awful trick that manages to wrap DynaLoader to read from a Base64 encoded .so that's inlined into the fatpack but that was more a "wondering if I could" thing than something I've ever felt the urge to actually use in anger so I've (so far) resisted the siren song of CPANing it anyway because people have an unfortunate tendency to forget that I, too, release things that are terrible ideas sometimes. Actually, I think that could be a great idea for cosmopolitan binaries! Right now, you have to recompile perl to add the XS you want, and some don't work yet: it all depends on the build tool for the XS module being supported So could you please tell me more about your trick? (or just link to it, I kinda get the idea but an actual example might help) > APPerl sounds like it could be awesome It already is: the perl.com binary is a polyglot zip file, where you can fatpack perl scripts by appending them to the zip file If you've got 5 min, run perlplebean.com: just be careful, as by default I expose your filesystem for http requests. Just comment out that part if you don't like it (it's meant to make people check and tweak the source) > APPerl definitely wants to write to a non-noexec filesystem Yes, perl.com has to be executable :) But on Linux, you may be able to use ld-loader to run it (like how a .sh script on a nonexec fs can be run as `sh -c file.sh`) > Either way, thank you very much for pointing out APPerl's existence to me. Even if I don't end up using it myself, having it in my mental index of available crazy things will almost certainly eventually result in my suggesting it to somebody else who'll find it the least insane way of getting the results they need :D Sure, feel free to get in touch at my nick at outlook.com! It's a bit strange for me to dig into perl now, while it was "current" more like 20 years ago, but I just love it!