***X-Scale` is now known as X-Scale
***X-Scale` is now known as X-Scale
<civodul`>just learned from guix-devel that Tom Lord passed away ***civodul` is now known as civodul
<drakonis>the kind that can be executed in the cli <drakonis>i'm aware that it compiles into bytecode but i havent seen anything regarding executable binaries <drakonis>what i have seen though, are scripts that execute a code snippet to execute a init function <rekado_>best you can do is to byte-compile it and add a tiny script wrapper that loads the compiled blob <rekado_>e.g. a file “hello.scm” with contents (define (main . args) (display "hello")) (main) <rekado_>compile with “guild compile hello.scm” <rekado_>then run the binary with guile -c '(load-compiled "hello.scm.go")' <dsmith-work>Guile can not (currently) create machine native binary excecutables. It does do JIT compilation to native. <rekado_>with some effort (and a little bit of C) you can stuff everything into a self-extracting archive and execute the blob from a memfd <dsmith-work>Thinking about that, kind of surprised no one has done it yet. *dsmith-work doesn't run Guix. yet? <rekado_>it was an experiment to see if we could have binaries that include a wrapper that would set environment variables needed by Guix <rekado_>the blob is an executable that performs some work and then executes its payload binary <rekado_>it’s ugly and gross and it made my wilted heart rejoice for a minute <drakonis>it warms my frozen heart to see such hacks <dsmith-work>rekado_: Does that need to be on a PAGE_SIZE boundary? <rekado_>dsmith-work: I don’t know. I didn’t use my brain much when I wrote this. My terminal merely told me that it worked. ¯\_(ツ)_/¯ <rekado_>there’s a comment after the license header that shows how I used it <rekado_>I found it simpler to pass in the original size of the wrapped binary than to parse the ELF file to find the offset <dsmith-work>I see now. That color theme grays out comments, so I didn't really notice it. <nmeum>hi, is a wrapper for the glob(3) function available in guile somewhere? <rekado_>this uses tail and tar at runtime; guix is needed at pack time <drakonis>the resulting tar shouldn't be that large, yeah? <rekado_>my (display "hello") is a whopping 138M… <drakonis>it seems like a good way to move execution to runtime <rekado_>it’s because the closure of the guile package is huge. <rekado_>compressed it would be something like 38M <rekado_>I didn’t compress because tar can’t append to a compressed archive. <rekado_>(I’m appending the compiled app binaries to the output of “guix pack guile”) <rekado_>it would probably work to compress and just concatenate the archives <rekado_>just use a slightly more complicated process to extract the two archives <drakonis>its not ideal, provided i wanted to compile a guile binary and rsync it into another machine <drakonis>guess i should learn more about guile's internals and attempt to output binaries <rekado_>still, it’s not great that this is an archive that needs unpacking. Slows startup down and you need more space. <drakonis>i'm inclined towards compiling binaries and/or image loading <drakonis>one for standalone/native execution and the other for loading large amounts of code into a running session