unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Jean Abou Samra <jean@abou-samra.fr>
To: "Dr. Arne Babenhauserheide" <arne_bab@web.de>
Cc: Guile User <guile-user@gnu.org>
Subject: Re: Curiosity: Microkernel implemented in Guile ?
Date: Wed, 29 Jun 2022 00:23:12 +0200	[thread overview]
Message-ID: <e8ee7e6c-5cc6-7f56-cbe4-64dca55b2cb7@abou-samra.fr> (raw)
In-Reply-To: <87fsjrap6t.fsf@web.de>

Hi,

Le 26/06/2022 à 08:22, Dr. Arne Babenhauserheide a écrit :
> Jean Abou Samra <jean@abou-samra.fr> writes:
>> (Also replying to Nala.) On the one hand, you have Guile without
>> compiled
>> bytecode, which is slow to run, and more importantly painful to use
>> because there are no error locations and often no function names in
>> error messages. On the other hand, Guile with bytecode takes compilation
>> time, which is an impediment in applications where it is merely being
>> used as a language that is practical to use for small extensions to an
>> existing program, without a need for optimized code. It forces you to
>> recompile even if you just touched one file, since otherwise it emits
>> ;;; messages about outdated .go files that create noise and/or affect
>> correctness. The compilation is impractical to set up when interfacing
>> with C if your main function is on the C side since compiling is started
>> from the Scheme side. There is no dependency tracking, so you need to
>> recompile everything whenever you change one file, which does not
>> encourage
>> quick experiments. Bytecode is fussy to integrate in installers: when
>> the user
>> unpacks an archive, you need to ensure that the .go files are unpacked
>> after the .scm files, otherwise Guile will consider them outdated. I
>> could list more …
> Please do! I’ve been trying to get a concrete list for issues hurting
> Lilypond for a long time.
>
> To summarize what I understood so far (with notes):
>
> - The compilation-messages (I hate them; these also hurt when writing
>    interactive utilities for the command-line, and I have too many
>    half-working fixes in script files to still be comfortable; I think I
>    once had a fix in configuration, but I lost it again — or maybe I had
>    just hacked Guile)
>
> - No dependency tracking for the explicit compilation, so changes to
>    Guile-code used elsewhere require an expensive re-compilation step,
>    even though compile-times are just what you want to avoid with a
>    scripting language ⇒ auto-compilation should just work and be
>    *silent*. Could this be fixed with a tool that recovers those
>    dependencies from Scheme-files? Something like
>    ./list-dependent-files.scm --start foo.scm bar.scm baz.scm moo.scm goo.scm
>    ⇒ bar.scm
>      baz.scm


Add:

- There is no simple way to byte-compile when the main
   function is in C(++). See the thread
https://lists.gnu.org/archive/html/guile-user/2022-02/msg00129.html
   about this one.

- A smarter strategy than looking at modification dates should
   be found for deciding when a bytecode file is outdated, for
   example storing a hash of the source file in the bytecode.
   This should avoid the problems with extracting and installing.

- Unless compilation is made really fast and can be used on-the-fly
   for large code chunks, interpreted code should be able to give
   meaningful error locations and backtraces.



>> Sorry for not exactly bringing enthusiasm to this otherwise interesting
>> thread.
> Don’t worry. I asked, and I’m glad you answered. There might be things
> that cannot be fixed, but I have not yet seen one here.



Sure, everything can be fixed with enough time and motivation.
We're in the free software world after all, and I have no
problem with tinkering with Guile myself to fix issues that
affect me. The problem, though, is getting the patches in Guile
after they have been produced. For example, exactly three months
ago I posted a patch fixing docstrings in curried definitions
<https://lists.gnu.org/archive/html/guile-devel/2022-03/msg00024.html>
which would fix a problem that prevents functions defined using
curried define from being listed in LilyPond's autogenerated
documentation. So far the patch has not received a reply. The
same holds for most patches being posted. This is the single one
thing that saddens me most about Guile, before all the technical
issues. Quite frankly, Guile is on the right path to abandonware.
I've said this before and I hoped the discussion
<https://lists.gnu.org/archive/html/guile-devel/2021-12/msg00012.html>
would lead to some change, but it didn't seem to happen.


> Though I don’t want to give false hope: I am not a core developer, so I
> cannot promise fast fixes. I can only promise that I will help pushing
> Guile more into the direction that Lilypond needs.


In my view, the most significant direction that LilyPond
needs is a situation where maintenance fixes can make it
to the main branch.


Thanks,
Jean




  parent reply	other threads:[~2022-06-28 22:23 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-23  6:11 Curiosity: Microkernel implemented in Guile ? Matias Jose Seco Baccanelli
2022-06-23  6:57 ` Mikael Djurfeldt
2022-06-23  9:01   ` Ricardo G. Herdt
2022-06-24  5:40     ` Dr. Arne Babenhauserheide
2022-06-23  7:02 ` Dr. Arne Babenhauserheide
2022-06-23  7:32 ` zimoun
2022-06-23  7:34 ` Maxime Devos
2022-07-02  9:47   ` Matias Jose Seco Baccanelli
2022-07-04  2:49     ` Blake Shaw
2022-06-23  9:13 ` pukkamustard
2022-06-23 10:09 ` Nala Ginrut
2022-06-23 11:22   ` Maxime Devos
2022-06-23 15:38   ` Nala Ginrut
2022-06-23 22:03     ` Dr. Arne Babenhauserheide
2022-06-24  1:12       ` Nala Ginrut
2022-06-24  5:45         ` Dr. Arne Babenhauserheide
2022-06-24  7:01         ` Jean Abou Samra
2022-06-24  7:41           ` Dr. Arne Babenhauserheide
2022-06-25 14:35             ` Jean Abou Samra
2022-06-26  6:22               ` Dr. Arne Babenhauserheide
2022-06-26  7:55                 ` Ricardo Wurmus
2022-06-26  8:32                   ` Dr. Arne Babenhauserheide
2022-06-28 22:23                 ` Jean Abou Samra [this message]
2022-06-26 10:37               ` Nala Ginrut
2022-06-28 22:30                 ` Jean Abou Samra
2022-06-24 12:42           ` Nala Ginrut
2022-06-24  3:27       ` Ognen Duzlevski
2022-06-24 21:24         ` Dr. Arne Babenhauserheide
2022-06-23 12:13 ` Ognen Duzlevski
2022-06-23 13:30   ` Dr. Arne Babenhauserheide
2022-06-23 17:47     ` Paul Emsley

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=e8ee7e6c-5cc6-7f56-cbe4-64dca55b2cb7@abou-samra.fr \
    --to=jean@abou-samra.fr \
    --cc=arne_bab@web.de \
    --cc=guile-user@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).