From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mike Gran Newsgroups: gmane.lisp.guile.user,gmane.comp.gnu.guix.user Subject: Re: No Guile on Windows? (was: My Guile Hacker Handbook) Date: Fri, 24 Jul 2020 04:50:42 -0700 Message-ID: <20200724115042.GA305613@spikycactus.com> References: <3364bc82b7660df3ae8613cdadef8b9dac2fe416.camel@korwin-zmijowski.fr> <83wo2teag4.fsf@gnu.org> <87ft9hnzqp.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20016"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , Dmitry Alexandrov , guile-user@gnu.org, help-guix@gnu.org To: "Dr. Arne Babenhauserheide" Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Fri Jul 24 13:51:33 2020 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jywEd-00056f-9y for guile-user@m.gmane-mx.org; Fri, 24 Jul 2020 13:51:31 +0200 Original-Received: from localhost ([::1]:57960 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jywEc-0005fv-6v for guile-user@m.gmane-mx.org; Fri, 24 Jul 2020 07:51:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44558) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jywEB-0005UY-GM for guile-user@gnu.org; Fri, 24 Jul 2020 07:51:03 -0400 Original-Received: from sonic305-20.consmr.mail.ne1.yahoo.com ([66.163.185.146]:36017) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jywE8-0004Kq-Kq for guile-user@gnu.org; Fri, 24 Jul 2020 07:51:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1595591458; bh=Ka4fi3Aq0TlW2OPddpfm8mX5Vp/BQ0uOlIG41bqRQNo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From:Subject; b=Cp4fpW6JPydJf2wy5KSO+Uk3xzav3IsH1jrJVSbEXs4BP3J08B5Cl0QYfaW5t9G6ggdr2istgUk3vFWI8PxbONw5RUiOaX0D2E4OMuApvVWXQzSh7xi0zMG1KTBpUxgatCXWTFX4OaxkhN6WuChL2nHuh74XwL6LBTWVUnXzhKeMwmwlpJqpag9FAZRpVw0AGECiYLcdrDAakKkKSfwQ2wBa+wyuu7z6Iajs9LLCkWq+YY5uLLacwbt3r7JNjS4zGg1VVROTuCdnVcsTiUJXiZ35A6Uls404vEQhe2XTua7U55d9jNHz4jT0CbfcqF8AOLJmjBd1FSXCkqGbG8R84w== X-YMail-OSG: 0eyhDn0VM1lE0fw2NihFuboZkglzyQbDzJX6ZrChyPOnf_kwv_qPJtsWMNIl5O_ QVSnpCzRgjmeelIns0CYYXc3cqiqvbR6Zzxb6Eq4DnsxmsavARnq7UjeqaDHEneq0J3uabTibEQw IK1WbROODqHVaiPph5orKQRCLuXYmh4TOGLKV3j5sW7VbLfcHTsgZyvuvKcyk.sOPplW_0ZwLPRP UlvwcZAd55Ug9OwaHdqXC51l9Rf82Nlfj.H.LjaURIJnEDdMg290VlQRun_HJAiH64xnNQKCI8Ss IQPq3WifFXHvF0GOObsAXhZW7.ElGLzXiRKoUTKIq7QsesXbyZcnW0tjojDSpoWTl.DqLMQfPQjZ Z_8uMvh43BQj3UdI6vB_ayz7ShWMbl_Hl.lv39CjbNBian1NFoLB5Q4HSNRaMgYUSASL0OHJgb6P qOIQsfIiQaqI16F5F5zkulrw1l3n1ypCK.snHTATkIVGzDVsQWvlwOdCu.lJHKF2f4skgcLmGM0N CqjYMK4tD8ZjIT2Qj7jaBRO3QzmaZ3WKQ7op9rrTlKd7bPooeuaGndG0uVtXJotzYxPIE9tpA6OK pgl8JrsfxfKQBUpnjxWQdT_cfgAoq8LpBrt9T27fhURdZNVQLcVXFWcRCmaO9sAta.qgZ.8qIUE. sSMvfGceGLEe9dTSk4jF29mGHHu5DKuCjaCKbKUKnCMfS0DMMLgOw2MbsrykTyPCJFZ4Mwhf74pw LzPp.teHaIsRd9sacxAJ48XUyiNWlVbVbilaZQHxuyJtI5mO2b3HZiq5P.iaNfHmn0R_pbzYhwuj R1J3ouQkxzB4I8HNiXy5by08xEaEyIqhBADmYQa3i_ Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic305.consmr.mail.ne1.yahoo.com with HTTP; Fri, 24 Jul 2020 11:50:58 +0000 Original-Received: by smtp405.mail.bf1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 53824e9e3f1fd4d2540b8680352c1e5f; Fri, 24 Jul 2020 11:50:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87ft9hnzqp.fsf@web.de> X-Mailer: WebService/1.1.16271 hermes_yahoo Apache-HttpAsyncClient/4.1.4 (Java/11.0.7) Received-SPF: pass client-ip=66.163.185.146; envelope-from=spk121@yahoo.com; helo=sonic305-20.consmr.mail.ne1.yahoo.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/24 07:50:59 X-ACL-Warn: Detected OS = Linux 3.11 and newer [fuzzy] X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:16738 gmane.comp.gnu.guix.user:10014 Archived-At: 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