unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Mike Gran <spk121@yahoo.com>
To: "Dr. Arne Babenhauserheide" <arne_bab@web.de>
Cc: Eli Zaretskii <eliz@gnu.org>, Dmitry Alexandrov <dag@gnui.org>,
	guile-user@gnu.org, help-guix@gnu.org
Subject: Re: No Guile on Windows? (was: My Guile Hacker Handbook)
Date: Fri, 24 Jul 2020 04:50:42 -0700	[thread overview]
Message-ID: <20200724115042.GA305613@spikycactus.com> (raw)
In-Reply-To: <87ft9hnzqp.fsf@web.de>

On Fri, Jul 24, 2020 at 09:22:54AM +0200, Dr. Arne Babenhauserheide wrote:
> 
> This is one of the biggest worries I have with the time I put into
> Guile: Many of my friends are still on Windows and in the current state
> of Guile I won???t be able to create tools that help them.
> 
> Creating installers for Windows was bad with Python, it is much worse
> with Guile. I wish I could just do something like
> guild package --target windows -o my-program.exe entry-point.scm 
> 
> This prevents people from using Guile for anything that might have to be
> cross-platform (though the Lilypond folks got it working
> https://lilypond.org/windows.de.html).

Yeah, I did put a 32-bit, no-thread Windows version of Guile-2.2 in
a game-jame game I did once, but, it was non-trivial.

For those that hanven't programmed on Windows much, it is a bit of a
struggle. The native tools are C++, not C, and the native API is just
different: different threading, different asyncs, similar but still
not identical sockets, different dynamic linking. No guarantee that
the sizeof(long) is sizeof(void *).

So different groups have created projects to help port or run legacy
UNIX-like software to Windows. The most familiar to free software people
are Cygwin and MinGW.

Cygwin: use gcc or clang, link to a special C and POSIX library that
handles the Windows API for you. This exists and works well for Guile.
Its emulation library is GPL, so to distribute a Cygwin app, it must
be GPL and must include a healthy chunk of the Cygwin infrastructure.

MinGW: use gcc or clang, link to native Windows API. Guile almost
supports this, because it uses Gnulib. Gnulib has a library of shims
that tweaks Windows C library API to be more POSIX-like, but, Gnulib
isn't a comprehensive solution.  When free software people talk of
a "port" to windows, they usualy mean that it is built with MinGW.

But, of course, MinGW had a spat years ago and now there are two
competing MinGW projects. Sigh.

Some projects go a step further and try to use the native windows
compilers and API, but, since autoconf basically won't work on Windows
because its shell language is not /bin/sh but is PowerShell or CMD,
this usually requires a different build system, like CMake or Meson.

Guile has both autoconf and gnulib, so MinGW is the semi-supported
path to a native Windows executable.

It actually would not be a lot of work to get a 32-bit, unthreaded
Guile 3.0 working again, assuming that lightening works for
Win32.  Just some run of the mill patching.  But historically
getting these patches in the main tree has been an awful experience
-- expecially in the Mark era -- because of arguments as to
whether they should be fixed in Guile or in Gnulib and having
to deal with both Guile and Gnulib having competing interests.

Thanks you for coming to my TED talk.  

Regards
Mike Gran



  parent reply	other threads:[~2020-07-24 11:50 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-23  6:18 My Guile Hacker Handbook Jérémy Korwin-Zmijowski
2020-07-23  6:46 ` test anything? (Re: My Guile Hacker Handbook) Marc Chantreux
2020-07-23  8:12   ` Frank Terbeck
2020-07-23 10:40     ` Jérémy Korwin-Zmijowski
2020-07-23 12:01       ` Marc Chantreux
2020-07-23 14:08         ` Jérémy Korwin-Zmijowski
2020-07-23 19:55       ` Zelphir Kaltstahl
2020-07-23 11:33     ` Marc Chantreux
2020-07-23 15:08   ` a French mailing list (was: test anything? (Re: My Guile Hacker Handbook)) Dmitry Alexandrov
2020-07-23 20:34     ` Marc Chantreux
2020-07-23 10:32 ` My Guile Hacker Handbook Bonface M. K.
2020-07-23 14:09   ` Jérémy Korwin-Zmijowski
2020-07-24  0:58     ` Bonface M. K.
2020-07-24  0:06 ` No Guile on Windows? (was: My Guile Hacker Handbook) Dmitry Alexandrov
2020-07-24  5:41   ` Eli Zaretskii
2020-07-24  7:22     ` Dr. Arne Babenhauserheide
2020-07-24  9:32       ` Christopher Lam
2020-07-24 11:50       ` Mike Gran [this message]
2020-07-24 16:25         ` Licensing of Cygwin comatibility layer (was: No Guile on Windows?) Dmitry Alexandrov
2020-07-24 23:33           ` Mike Gran
2020-07-24 14:00     ` No Guile on Windows? Ludovic Courtès
2020-07-24 14:20       ` Stefan Israelsson Tampe
2020-07-24 17:46         ` Dr. Arne Babenhauserheide
2020-07-24 17:47       ` Dmitry Alexandrov
2020-07-24 18:41       ` Jan Wielkiewicz
2020-07-25  3:48     ` No Guile on Windows? (was: My Guile Hacker Handbook) David Pirotte
2020-07-25  6:31       ` Eli Zaretskii
2020-07-25 13:56         ` Christopher Lam
2020-07-25 14:28           ` Eli Zaretskii
2020-07-28  2:52             ` Christopher Lam
2020-07-28  3:57               ` Mike Gran
2020-07-28  6:40                 ` Vladimir Zhbanov
2020-07-25 16:49         ` Mike Gran
2020-07-25 16:33       ` Jérémy Korwin-Zmijowski
2020-07-25 21:38       ` No Guile on Windows? Dmitry Alexandrov
2020-07-24  6:47   ` No Guile on Windows? (was: My Guile Hacker Handbook) divoplade
2020-07-24 11:38   ` Stefan Israelsson Tampe
  -- strict thread matches above, loose matches on Subject: below --
2020-08-13 13:02 Pikachu Hy via General Guile related discussions
2020-08-13 17:36 ` Linus Björnstam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200724115042.GA305613@spikycactus.com \
    --to=spk121@yahoo.com \
    --cc=arne_bab@web.de \
    --cc=dag@gnui.org \
    --cc=eliz@gnu.org \
    --cc=guile-user@gnu.org \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).