[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How best to produce a standalone executable with Guile?
From: |
Christopher Howard |
Subject: |
How best to produce a standalone executable with Guile? |
Date: |
Sun, 05 Apr 2020 09:19:43 -0800 |
Are you a Guix user? One you come up with a Guix package definition, it
is I think a one line command to generate an exportable executable with
a full dependency chain included, or a docker image.
--
Christopher Howard
p: +1 (907) 374-0257
w: https://librehacker.com
social: https://gnusocial.club/librehacker
gpg: ADDEAADE5D607C8D (keys.gnupg.net)
On Sun, 2020-04-05 at 12:00 -0400, address@hidden wrote:
> Send guile-user mailing list submissions to
> address@hidden
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://lists.gnu.org/mailman/listinfo/guile-user
> or, via email, send a message with subject or body 'help' to
> address@hidden
>
> You can reach the person managing the list at
> address@hidden
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of guile-user digest..."
>
>
> Today's Topics:
>
> 1. How best to produce a standalone executable with Guile?
> (James Cooper)
> 2. Re: How best to produce a standalone executable with Guile?
> (Matt Wette)
>
>
> -------------------------------------------------------------------
> ---
>
> Message: 1
> Date: Sun, 5 Apr 2020 05:28:10 +0000
> From: James Cooper <address@hidden>
> To: address@hidden
> Subject: How best to produce a standalone executable with Guile?
> Message-ID:
> <
> CAB_RW2E5s7Wd4yRA81OcaGLtGoFsvjOR1hCGhD=address@hidden>
> Content-Type: text/plain; charset="UTF-8"
>
> Hi Guile folks,
>
> I am currently experimenting with a handful of languages that include
> modern implementations of Concurrent ML, to determine which one
> appears
> best able to handle computationally- and message-heavy workloads (at
> least
> for my purposes, Computer Vision). Guile is one of the languages I
> am
> trying out with the Fibers library.
>
> My question is, how can I best go about creating Linux executables
> from
> Guile, where said programs benefit from the most ahead-of-time
> compilation
> and optimisation possible? I don't believe they strictly need to be
> standalone, as the environment I will be running the programs in will
> likely be the same as the development environment. So they can
> undoubtedly
> have dependencies on external libraries. Furthermore, I am perfectly
> happy
> with the process being a bit convoluted, as I can easily automate it
> with a
> makefile. I would, however, prefer if at all possible that the
> option to
> target other processor architectures remains available down the line
> (I
> assume using GCC can enable this, but I'm not sure).
>
> I have looked at all the sections of the Guile manual that appeared
> relevant, but to be honest I'm still a bit confused about what the
> best
> approach would be. *s* *9.4.5 Bytecode* in the manual seems to
> suggest
> that one can use guild to produce what will be a standalone
> executable that
> looks like an ELF binary to the system and runs on the Guile VM, but
> I'm
> entirely sure if I am reading it correctly. *s 6.18.5 Compiling
> Scheme
> Code* also discusses compilation but seems to denounce the practice
> explicitly. *s 9.3.8 Just-In-Time Native Code* talks about JIT
> compilation
> to native code for a given target. Is it possible to apply this
> process
> ahead-of-time?
>
> A potential alternative approach I can see is using the capabilities
> of
> running Guile code in a C program (compiled with GCC). This would
> presumably involve creating a template C program that just calls the
> appropriate Guile functions and passes the relevant command line
> parameters
> in.
>
> Any thoughts on what would likely produce the most efficient
> executable in
> the end? The target programs do not need to modify themselves at
> run-time
> (or really do anything dynamic) if that makes a difference. And does
> anyone know of pre-existing examples they could point me to? Please
> do let
> me know if there is further information I could provide that would
> help.
> Thanks in advance.
>
> Regards,
>
> James
>
>
> ------------------------------
>
> Message: 2
> Date: Sun, 5 Apr 2020 07:44:18 -0700
> From: Matt Wette <address@hidden>
> To: address@hidden
> Subject: Re: How best to produce a standalone executable with Guile?
> Message-ID: <address@hidden>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> On 4/4/20 10:28 PM, James Cooper wrote:
> > Hi Guile folks,
> >
> > I am currently experimenting with a handful of languages that
> > include
> > modern implementations of Concurrent ML, to determine which one
> > appears
> > best able to handle computationally- and message-heavy workloads
> > (at least
> > for my purposes, Computer Vision). Guile is one of the languages I
> > am
> > trying out with the Fibers library.
> >
> > My question is, how can I best go about creating Linux executables
> > from
> > Guile, where said programs benefit from the most ahead-of-time
> > compilation
> > and optimisation possible? I don't believe they strictly need to
> > be
> > standalone, as the environment I will be running the programs in
> > will
> > likely be the same as the development environment. So they can
> > undoubtedly
> > have dependencies on external libraries. Furthermore, I am
> > perfectly happy
> > with the process being a bit convoluted, as I can easily automate
> > it with a
> > makefile. I would, however, prefer if at all possible that the
> > option to
> > target other processor architectures remains available down the
> > line (I
> > assume using GCC can enable this, but I'm not sure).
> >
> > [...]
> You can't produce a pre-compiled machine code binary of your guile
> program. I believe you can use the environment variable
> GUILE_JIT_THRESHOLD set to zero to have your code compiled to
> machine code on first use.
>
> $ GUILE_JIT_THRESHOLD=0 guile my-program.scm
>
> You can also start execution of your guile program from C using
> the techniques described in the section "Programming in C" in the
> Guile Reference Manual.
>
> Matt
>
>
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> guile-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/guile-user
>
>
> ------------------------------
>
> End of guile-user Digest, Vol 209, Issue 4
> ******************************************