emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] [WIP] Port feature/native-comp to Windows.


From: Eli Zaretskii
Subject: Re: [PATCH] [WIP] Port feature/native-comp to Windows.
Date: Sun, 10 May 2020 22:16:24 +0300

> From: Nicolas Bértolo <address@hidden>
> Date: Sun, 10 May 2020 16:02:11 -0300
> Cc: Andrea Corallo <address@hidden>, address@hidden
> 
> > This is known in advance.  We already have that knowledge in Emacs,
> > see HAVE__SETJMP and HAVE_SIGSETJMP used in lisp.h.
> 
> > I don't yet understand why we need the _name_ of the setjmp function.
> > How will this name be used?
> 
> I think it is a good idea to show how the information is used:
> This is the function that generates a function call to `setjmp`.

Thanks, I will think about this.  But up front, we can simply use the
apriori knowledge about the way the setjmp macro is expanded in the
version used for building Emacs.  We could build in some defenses
against changes in that expansion, if that is a real danger, but
that's not urgent.

> > The gcc executable is always on PATH, only the auxiliary programs
> > (cc1.exe etc.) aren't.  Otherwise you couldn't compile programs in
> > arbitrary directories.
> 
> What about users that don't have `gcc` in PATH?

That'd mean the user's GCC installation is not workable.  I don't
think we need to consider this case, at least not seriously and not as
our first goal.

> > What is the definition of "the appropriate GCC version" in this
> > context?  E.g., does it have to be exactly the same version as the one
> > used to build Emacs itself?  Or does it mean something else?
> 
> The GCC that comes from the source tree that libgccjit was built from.
> 
> Lets say Emacs was built with libgccjit 9.2 and the user has GCC 10.0.0
> installed: it would be a very bad idea to use the local installation, AFAIU.
> In fact, libgccjit will not even try and it'll fail.

But that's a problem on any platform, not just on Windows, isn't it?
It would mean that when you upgrade GCC, you need to rebuild Emacs in
order to be able to continue natively-compiling Lisp files, even if
your Emacs version stays the same.  Is this reasonable?  What will
GNU/Linux users do that install binary distributions of Emacs -- will
they have to install a very particular version of GCC to be able to
compile to native code, and never upgrade it, except together with
upgrading Emacs?  Sounds very inconvenient to me.

I thought that we expect to use libgccjit that's part of the GCC
installation on the system where Emacs is used, i.e. that libgccjit
would be a shared library into which Emacs will call.  You seem to be
saying that libgccjit will come with Emacs (or be statically linked
into Emacs), and the end-user will have to have a GCC installation of
the same version from which libgccjit came on the system where Emacs
was built.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]