From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id UEv2BPzLGl+FWQAA0tVLHw (envelope-from ) for ; Fri, 24 Jul 2020 11:54:36 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id mGXeAPzLGl/dUQAA1q6Kng (envelope-from ) for ; Fri, 24 Jul 2020 11:54:36 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 9419794051E for ; Fri, 24 Jul 2020 11:54:35 +0000 (UTC) Received: from localhost ([::1]:60502 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jywHa-0006wx-Js for larch@yhetil.org; Fri, 24 Jul 2020 07:54:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44572) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jywEC-0005Vx-GO for help-guix@gnu.org; Fri, 24 Jul 2020 07:51:04 -0400 Received: from sonic305-20.consmr.mail.ne1.yahoo.com ([66.163.185.146]:43339) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jywE9-0004Ks-23 for help-guix@gnu.org; Fri, 24 Jul 2020 07:51:04 -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_3nHN9unrKUV5zm_zsNrwrvy2w30BHCavkp hFzXMe9q6.0qO0CpPhT2FEaF7mPVtqq4vSqObQHyb1l6WS6IB1JVnQcdON7VYiOsY_WBYdvui2r0 7yJWWnpP0gYt9hHaV5AKm7ybCdMhYr7fFR_qETVOuo2zyyg4fNPmiBTVxL65pDRIUAZGAb8QB1D5 LAsGB1CL3G.OtbvTAgfYrQzzKEMW3GdzF3rnuHzue1lzs2bw7Yc5.0BIrVcze3VbtddVP4Q5xAXL 05acWhthqr.juNOpHJ.B29J_USEebYJzGZaSW8yfiRxttFoiJ4Q2Qa.6Km8OdsVyka_0WZpL3Ks5 F07ntLuphv0DbHMotziIyeevxoEPTTmyZsS9fc5tsNyTEmLvlMyzxssT_FebN1RdXH9RPexpR4Dj UYVvQCfRJtcVy0fqf6nw0TjdzDC8ilia0f55sWto6raxXTCpJmOLMQzf.6ngZ_D_LUMJm2H2n2xO oKWP.zOVI2_ENbDgtc.vCiRfQwjKFHWC3tGp9GDIyNR8O_9XXw_rYIVe03Jw6aNznDQ6moOqanxt TYA.O8dj7DaAiyLut72kqlRr0h3BAp7miSoz6EbnMAs.r2U6VjM.W1J26BmSJ6y3wMgr6MNYj 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 Received: by smtp405.mail.bf1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 53824e9e3f1fd4d2540b8680352c1e5f; Fri, 24 Jul 2020 11:50:56 +0000 (UTC) Date: Fri, 24 Jul 2020 04:50:42 -0700 From: Mike Gran To: "Dr. Arne Babenhauserheide" Cc: Eli Zaretskii , Dmitry Alexandrov , guile-user@gnu.org, help-guix@gnu.org Subject: Re: No Guile on Windows? (was: My Guile Hacker Handbook) 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 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-Mailman-Approved-At: Fri, 24 Jul 2020 07:54:16 -0400 X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=yahoo.com header.s=s2048 header.b=Cp4fpW6J; dmarc=pass (policy=reject) header.from=yahoo.com; spf=pass (aspmx1.migadu.com: domain of help-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=help-guix-bounces@gnu.org X-Spam-Score: -1.71 X-TUID: z4zXATbNOXoG 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