emacs-devel
[Top][All Lists]
Advanced

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

Re: [External] : emacs-28 windows binaries available from alpha


From: Corwin Brust
Subject: Re: [External] : emacs-28 windows binaries available from alpha
Date: Sat, 5 Feb 2022 21:11:52 -0600

On Sat, Feb 5, 2022 at 4:10 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> Andrea, how about the following patch (which assumes
> comp-enable-subr-trampolines enables and disables only generation of
> new trampolines, but doesn't affect the use of existing trampolines)?
> Is this safe for the release branch, in your opinion?

To be very clear: I'm in no position to comment on how safe this patch
is.  That said...

>
> diff --git a/src/comp.c b/src/comp.c
> index 188dc6e..ba65837 100644
> --- a/src/comp.c
> +++ b/src/comp.c
> @@ -434,6 +434,13 @@ load_gccjit_if_necessary (bool mandatory)
>        gccjit_initialized = init_gccjit_functions ();
>        status = gccjit_initialized ? Qt : Qnil;
>        Vlibrary_cache = Fcons (Fcons (Qgccjit, status), Vlibrary_cache);
> +      /* Disable deferred async compilation and trampoline synthesis
> +        in this session, since libgccjit is not available.  */
> +      if (!gccjit_initialized)
> +       {
> +         native_comp_deferred_compilation = false;
> +         comp_enable_subr_trampolines = false;
> +       }
>      }
>
>    if (mandatory && !gccjit_initialized)

I was able to apply this to the emacs-28 branch and confirm it does
the job.  Thanks due to my elder lad for use of his gaming rig on a
Saturday eve.

The "Patched" result set came from a new set of binary packages[1]
built with this patch.  I also tried a few other things and didn't
spot any obvious breakage.

Drew,
Please LMK if you spot issues with my reproducer and (if you gett a
chance to try) whether you get any different result or if this seems
to solve the issue.

Reproducer:

0. create a folder called c:\emacs
1. download the EL file as linked in Drew's original message to this
thread to c:\emacs
2. download the ELC file attached to that same message to c:\emacs
3. unpack emacs-28.0.91.zip into c:\emacs
4. double click runemacs.exe
5. In scratch, paste in the following sniped and press C-x C-e

  (let ((load-path (append (list "c:/emacs") load-path)))
    (require 'strings))

Patched:

find "strings" at the tail of the *Messages* buffer

Unpatched:

Debugger entered--Lisp error: (error "Cannot find libgccjit library")
  error("Cannot find libgccjit library")
  comp-ensure-native-compiler()
  comp--native-compile((lambda (arg0 &optional arg1 arg2 arg3) (let
((f #'read-buffer)) (funcall f arg0 arg1 arg2 arg3))) nil
"c:/Users/Miko/AppData/Roaming/.emacs.d/eln-cache/2...")
  comp-trampoline-compile(read-buffer)
  comp-subr-trampoline-install(read-buffer)
  defalias(read-buffer #f(compiled-function (prompt &optional default
require-match predicate) #<bytecode -0x12f50ecb110554b3>))
  require(strings)
  (let ((load-path (append (list "c:/emacs") load-path))) (require 'strings))
  (progn (let ((load-path (append (list "c:/emacs") load-path)))
(require 'strings)))
  elisp--eval-last-sexp(nil)
  eval-last-sexp(nil)
  funcall-interactively(eval-last-sexp nil)
  command-execute(eval-last-sexp)

[1] Windows binaries Eli's patch, as above:
https://git.sr.ht/~mplscorwin/emacs-w64/tree/master/item/patched



reply via email to

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