Git Product home page Git Product logo

emacs-ng / emacs-ng Goto Github PK

View Code? Open in Web Editor NEW
1.6K 30.0 69.0 463.7 MB

A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender.

Home Page: https://emacs-ng.github.io/emacs-ng/

License: GNU General Public License v3.0

Emacs Lisp 74.34% Shell 0.32% Makefile 0.53% C 22.19% Perl 0.14% Awk 0.04% SmPL 0.01% Python 0.11% NSIS 0.01% Batchfile 0.02% HTML 0.11% M4 0.99% GDB 0.05% PostScript 0.17% TeX 0.61% SRecode Template 0.05% Smalltalk 0.05% JavaScript 0.09% NewLisp 0.06% Ruby 0.11%
emacs-ng javascript deno emacs async webworkers rust webrender gpu gpu-acceleration

emacs-ng's Introduction

emacs-ng

A new approach to Emacs


homepageDeno/Javascriptwebrenderng-modulehandbookfaq


Intro

emacs-ng is based off of the master branch of emacs, and regularly merges using Github Actions(Runs at 00:00, only on Saturday).

The last merged commit is 21775a936b (04 12 2024).

Motivation

The goal of this fork is to explore new development approaches. To accomplish this, we aim to maintain an inclusive and innovative environment. The project is not about replacing elisp with a more popular language like Javascript. We just want to make emacs more approachable for people who don't like lisp as much as we do.

Contributions are welcome from anyone and we are always happy to invite new people to the project. We are open towards interesting ideas to make emacs better.

Why Emacs-ng

This project should be considered an additive native layer over emacs, bringing features like Deno's Javascript and Async I/O environment, Mozilla's Webrender, and other features in development. emacs-ng's approach is to utilize multiple new development approaches and tools to bring Emacs to the next level. It is maintained by a team that loves Emacs and everything it stands for - being totally introspectable, with a fully customizable and free development environment. We want Emacs to be a editor 40+ years from now that has the flexibility and design to keep up with progressive technology.

Contributing

Emacs combined with the rust ecosystem brings a lot of possibilities. If you have any idea for a new feature, just open an issue before starting work so we can give you some feedback.

We try to maintain a list of "new contributor" friendly issues tagged with "good first issue". You should also take a look at our handbook.

Features

Webrender

WebRender is a GPU-based 2D rendering engine written in Rust from Mozilla. Firefox, the research web browser Servo, and other GUI frameworks draw with it. emacs-ng use it as a new experimental graphic backend to leverage GPU hardware.

Dynamic modules

Warning This feature is currently unmaintained

Allow dynamic modules to access more of Emacs's internals. Dynamic modules can be written to take advantage of these extra functionalities when they are available, while at the same time being fully compatible with vanilla Emacs.

Deno/Javascript

Note This feature is currently outdated and been disabled. However there is this to bring it back.

One of emacs-ng's primary features is integrating the Deno Runtime, which allows execution of JavaScript and Typescript within Emacs. The details of that feature are listed below, however many users would ask themselves WHY JAVASCRIPT? JavaScript is an extremely dynamic language that allows for a user to inspect and control their scripting environment. The key to note is that bringing in Deno isn't JUST JavaScript - it's an ecosystem of powerful tools and approaches that Emacs just doesn't have currently.

  • TypeScript offers an extremely flexible typing system, that allows to user to have compile time control of their scripting, with the flexibility of types "getting out of the way" when not needed.
  • Deno uses Google's v8 JavaScript engine, which features an extremely powerful JIT and world-class garbage collector.
  • Usage of modern Async I/O utilizing Rust's Tokio library.
  • Emacs-ng has WebWorker support, meaning that multiple JavaScript engines can be running in parallel within the editor. The only restriction is that only the 'main' JS Engine can directly call lisp functions.
  • Emacs-ng also has WebAssembly support - compile your C module as WebAsm and distribute it to the world. Don't worry about packaging shared libraries or changing module interfaces, everything can be handled and customized by you the user, at the scripting layer. No need to be dependent on native implementation details.

Performance

v8's world-class JIT offers the potential for large performance gains. Async I/O from Deno, WebWorkers, and WebAsm, gives you the tools to make Emacs a smoother and faster experience without having to install additional tools to launch as background processes or worry about shared library versions.

emacs-ng's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

emacs-ng's Issues

bindgen suddenly skips C inline functions

I have no idea what happened, that this doesn't work anymore. We use the same code to run bindgen as before and this seems to be the only thing that doesn't work.

Segmentation fault while building on Linux and macOS

macOS

./configure \
    --with-modules \
    --with-threads \
    --with-ns \
    --with-imagemagick \
    --with-gnutls=no \
    --without-x \
    --without-dbus \
    --without-makeinfo \
    --enable-rust-debug \
    && make

I also needed to comment out these 3 lines to be able to compile the Rust code. (I didn't have to comment them out in Linux, as they are not duplicated in the generated bindings.)

pub const INTMASK: EmacsInt = (EMACS_INT_MAX >> (INTTYPEBITS - 1));
pub const MOST_POSITIVE_FIXNUM: EmacsInt = EMACS_INT_MAX >> INTTYPEBITS as u32;
pub const MOST_NEGATIVE_FIXNUM: EmacsInt = -1 - MOST_POSITIVE_FIXNUM;
Error
...

LC_ALL=C ./temacs -batch  -l loadup --temacs=pdump \
        --bin-dest /usr/local/bin/ --eln-dest "/usr/local/lib/emacs/28.0.50/"
Loading loadup.el (source)...
Dump mode: pdump
Using load-path (/home/ubolonton/Programming/Tools/emacs/lisp)
Loading emacs-lisp/byte-run...
Loading emacs-lisp/backquote...
Loading subr...
Loading version...
Loading widget...
Loading custom...
Loading emacs-lisp/map-ynp...
Loading international/mule...
Loading international/mule-conf...
Loading env...
Loading format...
Loading bindings...
Loading window...
Loading files...
Loading emacs-lisp/macroexp...
Loading cus-face...
Loading faces...
Loading loaddefs.el (source)...
Makefile:618: recipe for target 'emacs.pdmp' failed
make[1]: *** [emacs.pdmp] Segmentation fault (core dumped)
make[1]: Leaving directory '/home/ubolonton/Programming/Tools/emacs/src'
Makefile:444: recipe for target 'src' failed
make: *** [src] Error 2
Backtrace
Process:               temacs [88289]
Path:                  /Users/USER/*/temacs
Identifier:            temacs
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        ??? [87298]
Responsible:           iTerm2 [356]
User ID:               501

Date/Time:             2021-01-01 09:50:22.128 +0700
OS Version:            Mac OS X 10.15.7 (19H2)
Report Version:        12
Anonymous UUID:        5CE71CA1-A041-B255-7C52-140E1C6E4B3F

Sleep/Wake UUID:       B0B7E37C-2F3C-45AD-BDC7-678FFF854360

Time Awake Since Boot: 43000 seconds
Time Since Wake:       6400 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x00007ffeeadbfff8
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [88289]

VM Regions Near 0x7ffeeadbfff8:
    MALLOC_SMALL           00007fa2ac800000-00007fa2ad000000 [ 8192K] rw-/rwx SM=PRV
--> STACK GUARD            00007ffee774f000-00007ffeeadc0000 [ 54.4M] ---/rwx SM=NUL  stack guard for thread 0
    Stack                  00007ffeeadc0000-00007ffeeaf4f000 [ 1596K] rw-/rwx SM=COW  thread 0

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   temacs                        	0x00000001045f19d4 Ftext_quoting_style + 4 (doc.c:696)
1   temacs                        	0x000000010465a5a8 doprnt + 104
2   temacs                        	0x000000010465b778 evxprintf + 168 (doprnt.c:592)
3   temacs                        	0x000000010460211b vformat_string + 91 (eval.c:2012)
4   temacs                        	0x00000001077c20bb verror + 9 (eval.c:2023)
5   temacs                        	0x00000001077c1e93 error + 111
6   temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
7   temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
8   temacs                        	0x0000000104602e7d Ffuncall + 669
9   temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
10  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
11  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
12  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
13  temacs                        	0x00000001077be938 xsignal + 9
14  temacs                        	0x00000001077c1ebc xsignal1 + 28
15  temacs                        	0x00000001077c20c8 verror + 22
16  temacs                        	0x00000001077c1e93 error + 111
17  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
18  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
19  temacs                        	0x0000000104602e7d Ffuncall + 669
20  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
21  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
22  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
23  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
24  temacs                        	0x00000001077be938 xsignal + 9
25  temacs                        	0x00000001077c1ebc xsignal1 + 28
26  temacs                        	0x00000001077c20c8 verror + 22
27  temacs                        	0x00000001077c1e93 error + 111
28  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
29  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
30  temacs                        	0x0000000104602e7d Ffuncall + 669
31  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
32  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
33  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
34  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
35  temacs                        	0x00000001077be938 xsignal + 9
36  temacs                        	0x00000001077c1ebc xsignal1 + 28
37  temacs                        	0x00000001077c20c8 verror + 22
38  temacs                        	0x00000001077c1e93 error + 111
39  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
40  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
41  temacs                        	0x0000000104602e7d Ffuncall + 669
42  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
43  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
44  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
45  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
46  temacs                        	0x00000001077be938 xsignal + 9
47  temacs                        	0x00000001077c1ebc xsignal1 + 28
48  temacs                        	0x00000001077c20c8 verror + 22
49  temacs                        	0x00000001077c1e93 error + 111
50  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
51  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
52  temacs                        	0x0000000104602e7d Ffuncall + 669
53  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
54  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
55  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
56  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
57  temacs                        	0x00000001077be938 xsignal + 9
58  temacs                        	0x00000001077c1ebc xsignal1 + 28
59  temacs                        	0x00000001077c20c8 verror + 22
60  temacs                        	0x00000001077c1e93 error + 111
61  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
62  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
63  temacs                        	0x0000000104602e7d Ffuncall + 669
64  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
65  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
66  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
67  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
68  temacs                        	0x00000001077be938 xsignal + 9
69  temacs                        	0x00000001077c1ebc xsignal1 + 28
70  temacs                        	0x00000001077c20c8 verror + 22
71  temacs                        	0x00000001077c1e93 error + 111
72  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
73  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
74  temacs                        	0x0000000104602e7d Ffuncall + 669
75  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
76  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
77  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
78  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
79  temacs                        	0x00000001077be938 xsignal + 9
80  temacs                        	0x00000001077c1ebc xsignal1 + 28
81  temacs                        	0x00000001077c20c8 verror + 22
82  temacs                        	0x00000001077c1e93 error + 111
83  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
84  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
85  temacs                        	0x0000000104602e7d Ffuncall + 669
86  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
87  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
88  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
89  temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
90  temacs                        	0x00000001077be938 xsignal + 9
91  temacs                        	0x00000001077c1ebc xsignal1 + 28
92  temacs                        	0x00000001077c20c8 verror + 22
93  temacs                        	0x00000001077c1e93 error + 111
94  temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
95  temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
96  temacs                        	0x0000000104602e7d Ffuncall + 669
97  temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
98  temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
99  temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
100 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
101 temacs                        	0x00000001077be938 xsignal + 9
102 temacs                        	0x00000001077c1ebc xsignal1 + 28
103 temacs                        	0x00000001077c20c8 verror + 22
104 temacs                        	0x00000001077c1e93 error + 111
105 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
106 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
107 temacs                        	0x0000000104602e7d Ffuncall + 669
108 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
109 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
110 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
111 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
112 temacs                        	0x00000001077be938 xsignal + 9
113 temacs                        	0x00000001077c1ebc xsignal1 + 28
114 temacs                        	0x00000001077c20c8 verror + 22
115 temacs                        	0x00000001077c1e93 error + 111
116 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
117 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
118 temacs                        	0x0000000104602e7d Ffuncall + 669
119 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
120 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
121 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
122 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
123 temacs                        	0x00000001077be938 xsignal + 9
124 temacs                        	0x00000001077c1ebc xsignal1 + 28
125 temacs                        	0x00000001077c20c8 verror + 22
126 temacs                        	0x00000001077c1e93 error + 111
127 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
128 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
129 temacs                        	0x0000000104602e7d Ffuncall + 669
130 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
131 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
132 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
133 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
134 temacs                        	0x00000001077be938 xsignal + 9
135 temacs                        	0x00000001077c1ebc xsignal1 + 28
136 temacs                        	0x00000001077c20c8 verror + 22
137 temacs                        	0x00000001077c1e93 error + 111
138 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
139 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
140 temacs                        	0x0000000104602e7d Ffuncall + 669
141 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
142 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
143 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
144 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
145 temacs                        	0x00000001077be938 xsignal + 9
146 temacs                        	0x00000001077c1ebc xsignal1 + 28
147 temacs                        	0x00000001077c20c8 verror + 22
148 temacs                        	0x00000001077c1e93 error + 111
149 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
150 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
151 temacs                        	0x0000000104602e7d Ffuncall + 669
152 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
153 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
154 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
155 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
156 temacs                        	0x00000001077be938 xsignal + 9
157 temacs                        	0x00000001077c1ebc xsignal1 + 28
158 temacs                        	0x00000001077c20c8 verror + 22
159 temacs                        	0x00000001077c1e93 error + 111
160 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
161 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
162 temacs                        	0x0000000104602e7d Ffuncall + 669
163 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
164 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
165 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
166 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
167 temacs                        	0x00000001077be938 xsignal + 9
168 temacs                        	0x00000001077c1ebc xsignal1 + 28
169 temacs                        	0x00000001077c20c8 verror + 22
170 temacs                        	0x00000001077c1e93 error + 111
171 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
172 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
173 temacs                        	0x0000000104602e7d Ffuncall + 669
174 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
175 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
176 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
177 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
178 temacs                        	0x00000001077be938 xsignal + 9
179 temacs                        	0x00000001077c1ebc xsignal1 + 28
180 temacs                        	0x00000001077c20c8 verror + 22
181 temacs                        	0x00000001077c1e93 error + 111
182 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
183 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
184 temacs                        	0x0000000104602e7d Ffuncall + 669
185 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
186 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
187 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
188 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
189 temacs                        	0x00000001077be938 xsignal + 9
190 temacs                        	0x00000001077c1ebc xsignal1 + 28
191 temacs                        	0x00000001077c20c8 verror + 22
192 temacs                        	0x00000001077c1e93 error + 111
193 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
194 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
195 temacs                        	0x0000000104602e7d Ffuncall + 669
196 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
197 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
198 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
199 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
200 temacs                        	0x00000001077be938 xsignal + 9
201 temacs                        	0x00000001077c1ebc xsignal1 + 28
202 temacs                        	0x00000001077c20c8 verror + 22
203 temacs                        	0x00000001077c1e93 error + 111
204 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
205 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
206 temacs                        	0x0000000104602e7d Ffuncall + 669
207 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
208 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
209 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
210 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
211 temacs                        	0x00000001077be938 xsignal + 9
212 temacs                        	0x00000001077c1ebc xsignal1 + 28
213 temacs                        	0x00000001077c20c8 verror + 22
214 temacs                        	0x00000001077c1e93 error + 111
215 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
216 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
217 temacs                        	0x0000000104602e7d Ffuncall + 669
218 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
219 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
220 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
221 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
222 temacs                        	0x00000001077be938 xsignal + 9
223 temacs                        	0x00000001077c1ebc xsignal1 + 28
224 temacs                        	0x00000001077c20c8 verror + 22
225 temacs                        	0x00000001077c1e93 error + 111
226 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
227 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
228 temacs                        	0x0000000104602e7d Ffuncall + 669
229 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
230 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
231 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
232 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
233 temacs                        	0x00000001077be938 xsignal + 9
234 temacs                        	0x00000001077c1ebc xsignal1 + 28
235 temacs                        	0x00000001077c20c8 verror + 22
236 temacs                        	0x00000001077c1e93 error + 111
237 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
238 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
239 temacs                        	0x0000000104602e7d Ffuncall + 669
240 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
241 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
242 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
243 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
244 temacs                        	0x00000001077be938 xsignal + 9
245 temacs                        	0x00000001077c1ebc xsignal1 + 28
246 temacs                        	0x00000001077c20c8 verror + 22
247 temacs                        	0x00000001077c1e93 error + 111
248 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
249 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
250 temacs                        	0x0000000104602e7d Ffuncall + 669
251 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
252 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
253 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
254 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
255 temacs                        	0x00000001077be938 xsignal + 9
256 temacs                        	0x00000001077c1ebc xsignal1 + 28
257 temacs                        	0x00000001077c20c8 verror + 22
258 temacs                        	0x00000001077c1e93 error + 111
259 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
260 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
261 temacs                        	0x0000000104602e7d Ffuncall + 669
262 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
263 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
264 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
265 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
266 temacs                        	0x00000001077be938 xsignal + 9
267 temacs                        	0x00000001077c1ebc xsignal1 + 28
268 temacs                        	0x00000001077c20c8 verror + 22
269 temacs                        	0x00000001077c1e93 error + 111
270 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
271 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
272 temacs                        	0x0000000104602e7d Ffuncall + 669
273 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
274 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
275 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
276 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
277 temacs                        	0x00000001077be938 xsignal + 9
278 temacs                        	0x00000001077c1ebc xsignal1 + 28
279 temacs                        	0x00000001077c20c8 verror + 22
280 temacs                        	0x00000001077c1e93 error + 111
281 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
282 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
283 temacs                        	0x0000000104602e7d Ffuncall + 669
284 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
285 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
286 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
287 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
288 temacs                        	0x00000001077be938 xsignal + 9
289 temacs                        	0x00000001077c1ebc xsignal1 + 28
290 temacs                        	0x00000001077c20c8 verror + 22
291 temacs                        	0x00000001077c1e93 error + 111
292 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
293 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
294 temacs                        	0x0000000104602e7d Ffuncall + 669
295 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
296 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
297 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
298 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
299 temacs                        	0x00000001077be938 xsignal + 9
300 temacs                        	0x00000001077c1ebc xsignal1 + 28
301 temacs                        	0x00000001077c20c8 verror + 22
302 temacs                        	0x00000001077c1e93 error + 111
303 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
304 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
305 temacs                        	0x0000000104602e7d Ffuncall + 669
306 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
307 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
308 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
309 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
310 temacs                        	0x00000001077be938 xsignal + 9
311 temacs                        	0x00000001077c1ebc xsignal1 + 28
312 temacs                        	0x00000001077c20c8 verror + 22
313 temacs                        	0x00000001077c1e93 error + 111
314 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
315 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
316 temacs                        	0x0000000104602e7d Ffuncall + 669
317 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
318 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
319 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
320 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
321 temacs                        	0x00000001077be938 xsignal + 9
322 temacs                        	0x00000001077c1ebc xsignal1 + 28
323 temacs                        	0x00000001077c20c8 verror + 22
324 temacs                        	0x00000001077c1e93 error + 111
325 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
326 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
327 temacs                        	0x0000000104602e7d Ffuncall + 669
328 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
329 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
330 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
331 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
332 temacs                        	0x00000001077be938 xsignal + 9
333 temacs                        	0x00000001077c1ebc xsignal1 + 28
334 temacs                        	0x00000001077c20c8 verror + 22
335 temacs                        	0x00000001077c1e93 error + 111
336 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
337 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
338 temacs                        	0x0000000104602e7d Ffuncall + 669
339 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
340 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
341 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
342 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
343 temacs                        	0x00000001077be938 xsignal + 9
344 temacs                        	0x00000001077c1ebc xsignal1 + 28
345 temacs                        	0x00000001077c20c8 verror + 22
346 temacs                        	0x00000001077c1e93 error + 111
347 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
348 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
349 temacs                        	0x0000000104602e7d Ffuncall + 669
350 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
351 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
352 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
353 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
354 temacs                        	0x00000001077be938 xsignal + 9
355 temacs                        	0x00000001077c1ebc xsignal1 + 28
356 temacs                        	0x00000001077c20c8 verror + 22
357 temacs                        	0x00000001077c1e93 error + 111
358 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
359 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
360 temacs                        	0x0000000104602e7d Ffuncall + 669
361 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
362 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
363 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
364 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
365 temacs                        	0x00000001077be938 xsignal + 9
366 temacs                        	0x00000001077c1ebc xsignal1 + 28
367 temacs                        	0x00000001077c20c8 verror + 22
368 temacs                        	0x00000001077c1e93 error + 111
369 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
370 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
371 temacs                        	0x0000000104602e7d Ffuncall + 669
372 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
373 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
374 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
375 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
376 temacs                        	0x00000001077be938 xsignal + 9
377 temacs                        	0x00000001077c1ebc xsignal1 + 28
378 temacs                        	0x00000001077c20c8 verror + 22
379 temacs                        	0x00000001077c1e93 error + 111
380 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
381 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
382 temacs                        	0x0000000104602e7d Ffuncall + 669
383 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
384 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
385 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
386 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
387 temacs                        	0x00000001077be938 xsignal + 9
388 temacs                        	0x00000001077c1ebc xsignal1 + 28
389 temacs                        	0x00000001077c20c8 verror + 22
390 temacs                        	0x00000001077c1e93 error + 111
391 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
392 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
393 temacs                        	0x0000000104602e7d Ffuncall + 669
394 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
395 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
396 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
397 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
398 temacs                        	0x00000001077be938 xsignal + 9
399 temacs                        	0x00000001077c1ebc xsignal1 + 28
400 temacs                        	0x00000001077c20c8 verror + 22
401 temacs                        	0x00000001077c1e93 error + 111
402 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
403 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
404 temacs                        	0x0000000104602e7d Ffuncall + 669
405 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
406 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
407 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
408 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
409 temacs                        	0x00000001077be938 xsignal + 9
410 temacs                        	0x00000001077c1ebc xsignal1 + 28
411 temacs                        	0x00000001077c20c8 verror + 22
412 temacs                        	0x00000001077c1e93 error + 111
413 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
414 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
415 temacs                        	0x0000000104602e7d Ffuncall + 669
416 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
417 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
418 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
419 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
420 temacs                        	0x00000001077be938 xsignal + 9
421 temacs                        	0x00000001077c1ebc xsignal1 + 28
422 temacs                        	0x00000001077c20c8 verror + 22
423 temacs                        	0x00000001077c1e93 error + 111
424 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
425 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
426 temacs                        	0x0000000104602e7d Ffuncall + 669
427 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
428 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
429 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
430 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
431 temacs                        	0x00000001077be938 xsignal + 9
432 temacs                        	0x00000001077c1ebc xsignal1 + 28
433 temacs                        	0x00000001077c20c8 verror + 22
434 temacs                        	0x00000001077c1e93 error + 111
435 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
436 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
437 temacs                        	0x0000000104602e7d Ffuncall + 669
438 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
439 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
440 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
441 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
442 temacs                        	0x00000001077be938 xsignal + 9
443 temacs                        	0x00000001077c1ebc xsignal1 + 28
444 temacs                        	0x00000001077c20c8 verror + 22
445 temacs                        	0x00000001077c1e93 error + 111
446 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
447 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
448 temacs                        	0x0000000104602e7d Ffuncall + 669
449 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
450 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
451 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
452 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
453 temacs                        	0x00000001077be938 xsignal + 9
454 temacs                        	0x00000001077c1ebc xsignal1 + 28
455 temacs                        	0x00000001077c20c8 verror + 22
456 temacs                        	0x00000001077c1e93 error + 111
457 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
458 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
459 temacs                        	0x0000000104602e7d Ffuncall + 669
460 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
461 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
462 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
463 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
464 temacs                        	0x00000001077be938 xsignal + 9
465 temacs                        	0x00000001077c1ebc xsignal1 + 28
466 temacs                        	0x00000001077c20c8 verror + 22
467 temacs                        	0x00000001077c1e93 error + 111
468 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
469 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
470 temacs                        	0x0000000104602e7d Ffuncall + 669
471 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
472 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
473 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
474 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
475 temacs                        	0x00000001077be938 xsignal + 9
476 temacs                        	0x00000001077c1ebc xsignal1 + 28
477 temacs                        	0x00000001077c20c8 verror + 22
478 temacs                        	0x00000001077c1e93 error + 111
479 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
480 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
481 temacs                        	0x0000000104602e7d Ffuncall + 669
482 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
483 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
484 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
485 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
486 temacs                        	0x00000001077be938 xsignal + 9
487 temacs                        	0x00000001077c1ebc xsignal1 + 28
488 temacs                        	0x00000001077c20c8 verror + 22
489 temacs                        	0x00000001077c1e93 error + 111
490 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
491 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
492 temacs                        	0x0000000104602e7d Ffuncall + 669
493 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
494 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
495 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
496 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
497 temacs                        	0x00000001077be938 xsignal + 9
498 temacs                        	0x00000001077c1ebc xsignal1 + 28
499 temacs                        	0x00000001077c20c8 verror + 22
500 temacs                        	0x00000001077c1e93 error + 111
501 temacs                        	0x00000001077c2372 Fautoload_do_load.cold.1 + 34
502 temacs                        	0x00000001046007dc Fautoload_do_load + 636 (eval.c:2198)
503 temacs                        	0x0000000104602e7d Ffuncall + 669
504 temacs                        	0x0000000104602a70 Fapply + 576 (eval.c:2573)
505 temacs                        	0x00000001045fdfb4 call_debugger + 532 (eval.c:331)
506 temacs                        	0x0000000104601f59 signal_or_quit + 1369 (eval.c:1806)
507 temacs                        	0x00000001077c2054 Fsignal + 32 (eval.c:1692)
508 temacs                        	0x00000001077be938 xsignal + 9
509 temacs                        	0x00000001077c1ebc xsignal1 + 28
510 temacs                        	0x00000001077c20c8 verror + 22
511 temacs                        	0x00000001077c1e93 error + 111

Linux

./configure \
    --with-modules \
    --with-threads \
    --with-gnutls=no \
    --without-imagemagick \
    --without-x \
    --without-dbus \
    --without-makeinfo \
    --enable-rust-debug \
    && make
Error
...

LC_ALL=C ./temacs -batch  -l loadup --temacs=pdump \
        --bin-dest /Users/ubolonton/Programming/Tools/emacs/nextstep/Emacs.app/Contents/MacOS/bin/ --eln-dest "/Users/ubolonton/Programming/Tools/emacs/nextstep/Emacs.app/Contents/MacOS/lib/emacs/28.0.50/"
Loading loadup.el (source)...
Dump mode: pdump
Using load-path (/Users/ubolonton/Programming/Tools/emacs/lisp)
Loading emacs-lisp/byte-run...
Loading emacs-lisp/backquote...
Loading subr...
Loading version...
Loading widget...
Loading custom...
Loading emacs-lisp/map-ynp...
Loading international/mule...
Loading international/mule-conf...
Loading env...
Loading format...
Loading bindings...
Loading window...
Loading files...
Loading emacs-lisp/macroexp...
Loading cus-face...
Loading faces...
Loading loaddefs.el (source)...
make[1]: *** [Makefile:618: emacs.pdmp] Segmentation fault: 11
make[1]: Leaving directory '/Users/ubolonton/Programming/Tools/emacs/src'
make: *** [Makefile:444: src] Error 2
Backtrace
Core was generated by `./temacs --__aslr-disabled -batch -l loadup --temacs=pdump --bin-dest /usr/loca'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  doprnt (buffer=0x7fffff670280 "\004", bufsize=4000, format=format@entry=0x555558db3560 "Attempt to autoload %s while preparing to dump", ap=ap@entry=0x7fffff670200, format_end=0x0) at doprnt.c:186
186     doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
warning: Missing auto-load script at offset 0 in section .debug_gdb_scripts
of file /home/ubolonton/Programming/Tools/emacs/src/temacs.
Use `info auto-load python-scripts [REGEXP]' to list them.
(gdb) bt
#0  doprnt (buffer=0x7fffff670280 "\004", bufsize=4000, format=format@entry=0x555558db3560 "Attempt to autoload %s while preparing to dump", ap=ap@entry=0x7fffff670200, format_end=0x0) at doprnt.c:186
#1  0x0000555555b274e5 in doprnt (ap=0x7fffff670200, format_end=0x0, format=0x555558db3560 "Attempt to autoload %s while preparing to dump", bufsize=<optimized out>, buffer=<optimized out>) at doprnt.c:589
#2  evxprintf (buf=buf@entry=0x7fffff670278, bufsize=bufsize@entry=0x7fffff670270, nonheapbuf=nonheapbuf@entry=0x7fffff670280 "\004", bufsize_max=bufsize_max@entry=2305843009213693952,
    format=0x555558db3560 "Attempt to autoload %s while preparing to dump", ap=ap@entry=0x7fffff671250) at doprnt.c:590
#3  0x0000555555ad59e0 in vformat_string (m=<optimized out>, ap=ap@entry=0x7fffff671250) at eval.c:2011
#4  0x00005555559c5e0b in verror (m=<optimized out>, ap=ap@entry=0x7fffff671250) at eval.c:2023
#5  0x00005555559c5eb1 in error (m=m@entry=0x555558db3560 "Attempt to autoload %s while preparing to dump") at eval.c:2034
#6  0x0000555555ad625e in Fautoload_do_load (fundef=0x555559ce3cab <pure+518923>, funname=funname@entry=0x4290, macro_only=macro_only@entry=0x0) at eval.c:2195
#7  0x0000555555ad6415 in Ffuncall (nargs=nargs@entry=3, args=0x7fffff6713d0) at eval.c:2962
#8  0x0000555555ad6780 in Fapply (nargs=nargs@entry=2, args=args@entry=0x7fffff671480) at eval.c:2573
#9  0x0000555555ad699c in apply1 (fn=<optimized out>, arg=arg@entry=0x55555a441ac3) at eval.c:2789
#10 0x0000555555ad6b88 in call_debugger (arg=0x55555a441ac3) at eval.c:348
#11 0x0000555555ad715a in signal_or_quit (error_symbol=<optimized out>, data=0x55555a441a83, keyboard_quit=keyboard_quit@entry=false) at eval.c:1805
#12 0x00005555559c5dd2 in Fsignal (error_symbol=<optimized out>, error_symbol@entry=0x90, data=<optimized out>) at eval.c:1691
#13 0x00005555559c5e02 in xsignal (data=<optimized out>, error_symbol=0x90) at lisp.h:4133
#14 xsignal1 (error_symbol=error_symbol@entry=0x90, arg=<optimized out>) at eval.c:1843
#15 0x00005555559c5e18 in verror (m=<optimized out>, ap=ap@entry=0x7fffff6715b0) at eval.c:2023
#16 0x00005555559c5eb1 in error (m=m@entry=0x555558db3560 "Attempt to autoload %s while preparing to dump") at eval.c:2034
#17 0x0000555555ad625e in Fautoload_do_load (fundef=0x555559ce3cab <pure+518923>, funname=funname@entry=0x4290, macro_only=macro_only@entry=0x0) at eval.c:2195
#18 0x0000555555ad6415 in Ffuncall (nargs=nargs@entry=3, args=0x7fffff671730) at eval.c:2962
#19 0x0000555555ad6780 in Fapply (nargs=nargs@entry=2, args=args@entry=0x7fffff6717e0) at eval.c:2573
#20 0x0000555555ad699c in apply1 (fn=<optimized out>, arg=arg@entry=0x55555a441a63) at eval.c:2789
#21 0x0000555555ad6b88 in call_debugger (arg=0x55555a441a63) at eval.c:348
#22 0x0000555555ad715a in signal_or_quit (error_symbol=<optimized out>, data=0x55555a441a23, keyboard_quit=keyboard_quit@entry=false) at eval.c:1805
#23 0x00005555559c5dd2 in Fsignal (error_symbol=<optimized out>, error_symbol@entry=0x90, data=<optimized out>) at eval.c:1691
#24 0x00005555559c5e02 in xsignal (data=<optimized out>, error_symbol=0x90) at lisp.h:4133
#25 xsignal1 (error_symbol=error_symbol@entry=0x90, arg=<optimized out>) at eval.c:1843

The Linux traceback is a lot longer. I copied only an exceprt, as it seems to be a case of stack overflow.

The Lisp error it was trying to raise has the message "Attempt to autoload %s while preparing to dump".

Add native Typescript Support

A big selling point of Deno is typescript out of the box.

Deno is broken into multiple crates: deno_runtime, deno_core. These are used by deno_cli, which is the command line application. Most of the actual typescript code, including the compiler, is within deno_cli. We only use deno_runtime and deno_core in emacs-ng. Due to this, we don't have typescript out of the box.

The code in deno_cli for typescript is fairly straight forward. Emacs-ng would only want a subset, however it will allow us to utilize typescript.

Once working (will be tracked by an additional issue) we can add typescript definitions for Lisp functions. (I.e function get_buffer_create(arg: string): LispBuffer)

configure github ci

Unfortunately travis has changed its payment model so we have to use github actions.

  • add seperate build for webrender
  • Fix failing tests from native-comp branch(upstream)
  • Linux
  • OSX

Top level promise rejection invalidates previous sessions lambda functions

When a top level promise rejection occurs, we are forced to restart the Deno runtime. The issue is how we implement JavaScript Lambdas in Lisp, which is to assign them an auto ID. A JS lambda is actually something like

(lambda (&rest alpha) (js--invoke <AUTO ID> (make-js-finalizer <AUTO ID>) alpha)

js--invoke is a special function that uses AUTO ID to execute a javascript function saved in an array.

When the runtime is destroyed, all of those auto id's are invalidated. The good news is that we can identify this situation by adding a context ID that increments on restart that will let us print a message saying that this function is no longer valid due to the JS restart, and will need to be redefined.

Add eval-js-buffer and eval-js-region

To do this, we will need to change the code to allow JS to be executed as a module without being a file on disk. We can do this by "faking" a file for the module loader.

Compilation errors that seem to be related to git2

I'm getting these errors compiling from 08fbf4a

Linux

./configure \
    --with-modules \
    --with-threads \
    --without-nativecomp \
    --without-gnutls \
    --without-imagemagick \
    --without-x \
    --without-dbus \
    --without-makeinfo
Error
   Compiling git2 v0.13.15
warning: unused variable: `repo`
  --> src/git.rs:12:12
   |
12 |         Ok(repo) => path,
   |            ^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
   |
   = note: `#[warn(unused_variables)]` on by default

error: could not compile `emacsng`

Caused by:
  process didn't exit successfully: `rustc --crate-name emacsng --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type staticlib --emit=dep-info,link -C opt-level=z -C panic=abort -C lto -C codegen-units=1 --cfg 'feature="default"' --cfg 'feature="use-xml2"' -C metadata=55c5b5e2a2079b62 -C extra-filename=-55c5b5e2a2079b62 --out-dir /home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps -L dependency=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps --extern cfg_if=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libcfg_if-9529c48ef2953a20.rlib --extern crossbeam=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libcrossbeam-9e5f9fdf61b85fb5.rlib --extern deno=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libdeno-11d8ae5411ea93e5.rlib --extern deno_core=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libdeno_core-c8e2ec37359ca618.rlib --extern deno_runtime=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libdeno_runtime-8b2103f113d89108.rlib --extern errno=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liberrno-9e6f3b41308d76fe.rlib --extern field_offset=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libfield_offset-95d529123245967e.rlib --extern flate2=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libflate2-0d81cf2203cce24f.rlib --extern futures=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libfutures-226ecede1356f2ad.rlib --extern git2=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libgit2-26203f3190bf6b11.rlib --extern itertools=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libitertools-0eb5f6e7389d0c9d.rlib --extern lazy_static=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liblazy_static-78cceb195b642a98.rlib --extern libc=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liblibc-ab503b444252b559.rlib --extern line_wrap=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libline_wrap-028d8f284f577f72.rlib --extern lisp=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liblisp-e4718c944e9275ae.rlib --extern lisp_macros=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liblisp_macros-fd4dbf916713cbd0.so --extern lisp_util=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liblisp_util-095caf9862df1e95.rlib --extern lsp_server=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/liblsp_server-0ecef63603c4b374.rlib --extern openssl=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libopenssl-ff87d105f67835d0.rlib --extern openssl_sys=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libopenssl_sys-6c6a98dc51f7423e.rlib --extern rand=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/librand-183e0da0a3ce9260.rlib --extern remacs_lib=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libremacs_lib-bbd2ca18e959bbbc.rlib --extern rusty_v8=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/librusty_v8-71521dfac9ac4675.rlib --extern serde_json=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libserde_json-8d844871f5395f22.rlib --extern systemstat=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libsystemstat-06ed65eef74c01cb.rlib --extern tokio=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libtokio-cde8b4fbe3b373fe.rlib --extern tokio_rustls=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/deps/libtokio_rustls-c37a7b957e4ea0a4.rlib -L /home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/gn_out/obj -L native=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/build/ring-49998ceb61880dbc/out -L native=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/build/sys-info-5ae78d697386a41b/out -L native=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/build/libgit2-sys-3f234e19096dee3b/out/build -L native=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/build/libssh2-sys-fa4857cc93638a2c/out/build -L native=/home/ubolonton/Programming/Tools/emacs/emacs-ng/rust_src/target/release/build/openssl-sys-f4a4fba5abb8e92d/out/openssl-build/install/lib` (signal: 9, SIGKILL: kill)
Makefile:696: recipe for target '../rust_src/target/release/libemacsng.a' failed
make[1]: *** [../rust_src/target/release/libemacsng.a] Error 101
make[1]: Leaving directory '/home/ubolonton/Programming/Tools/emacs/emacs-ng/src'
Makefile:445: recipe for target 'src' failed
make: *** [src] Error 2

macOS

./configure \
    --with-modules \
    --with-threads \
    --with-ns \
    --with-imagemagick \
    --with-gnutls=no \
    --without-x \
    --without-dbus \
    --without-makeinfo
Error
make[2]: Leaving directory '/Users/ubolonton/Programming/Tools/emacs/emacs-ng/admin/unidata'
gcc -o temacs.tmp \
  -Demacs  -I. -I. -I../lib -I../lib      -D_REENTRANT -I/opt/local/include/librsvg-2.0 -I/opt/local/include/gdk-pixbuf-2.0 -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include/pixman-1 -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/opt/local/include/ImageMagick-6 -I/opt/local/include/libpng16 -I/opt/local/include/libxml2               -MMD -MF deps/.d -MP       -pthread -DEMACS_EXTERN_INLINE -Wno-switch -Wno-pointer-sign -Wno-string-plus-int -Wno-unknown-attributes -Wno-initializer-overrides -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -g3 -O2  -framework AppKit -framework IOKit -framework Carbon -framework IOSurface -L.././rust_src/target/release -framework Security \
    dispnew.o frame.o scroll.o xdisp.o menu.o  window.o charset.o coding.o category.o ccl.o character.o chartab.o bidi.o cm.o term.o terminal.o xfaces.o    emacs.o keyboard.o macros.o keymap.o sysdep.o bignum.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o cmds.o casetab.o casefiddle.o indent.o search.o regex-emacs.o undo.o alloc.o pdumper.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o font.o print.o lread.o emacs-module.o syntax.o  bytecode.o comp.o dynlib.o process.o gnutls.o callproc.o region-cache.o sound.o timefns.o atimer.o doprnt.o intervals.o textprop.o composite.o xml.o lcms.o kqueue.o  profiler.o decompress.o thread.o systhread.o        fontset.o fringe.o image.o  json.o  nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o macfont.o -lemacsng terminfo.o lastfile.o      ../lib/libgnu.a       -ltiff -ljpeg -L/opt/local/lib -lpng16 -lgif    -L/opt/local/lib -lrsvg-2 -lm -lgio-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation -lcairo -L/opt/local/lib -lMagickWand-6.Q16 -lMagickCore-6.Q16            -L/opt/local/lib -lxml2     -lncurses            -L/opt/local/lib -llcms2   -lz   -L/opt/local/lib -ljansson -lgmp  -ldl -lm -lresolv
Undefined symbols for architecture x86_64:
  "_libiconv", referenced from:
      _git_path_iconv in libemacsng.a(path.o)
  "_libiconv_close", referenced from:
      _git_path_iconv_clear in libemacsng.a(path.o)
  "_libiconv_open", referenced from:
      _git_path_direach in libemacsng.a(path.o)
      _git_path_iconv_init_precompose in libemacsng.a(path.o)
      _git_path_diriter_init in libemacsng.a(path.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Makefile:745: temacs] Error 1
make[1]: Leaving directory '/Users/ubolonton/Programming/Tools/emacs/emacs-ng/src'
make: *** [Makefile:445: src] Error 2

The error on macOS seems to be that the make rules are not aware of the lib/include paths used by cargo?

Fix JavaScript Tests

JS tests are currently broken. The issue is the interaction of the new timer logic with batch mode.

Once fixed, I recommend we manually run JS tests for CI.

open a compilation buffer with errors if eval-ts-buffer fails

I copy-pasted this JS file, and accidentally hit eval-ts-buffer instead of eval-js-buffer and ended up seeing these error messages in my Messages buffer.

funcall-interactively: TS2304 [ERROR]: Cannot find name 'Any'.
var lisp: Any;
          ~~~
    at file:///home/petr_tik/Coding/emacs-ng/$anon$lisp$31610999141.ts:3:11

TS7006 [ERROR]: Parameter 'filename' implicitly has an 'any' type.
export function resolveHomeDir(filename) {
                               ~~~~~~~~
    at file:///home/petr_tik/Coding/emacs-ng/$anon$lisp$31610999141.ts:5:32

TS7006 [ERROR]: Parameter 'filename' implicitly has an 'any' type.
export function openFileAsync(filename) {
                              ~~~~~~~~
    at file:///home/petr_tik/Coding/emacs-ng/$anon$lisp$31610999141.ts:14:31

TS7006 [ERROR]: Parameter 'filename' implicitly has an 'any' type.
    func: filename => openFileAsync(filename)
          ~~~~~~~~
    at file:///home/petr_tik/Coding/emacs-ng/$anon$lisp$31610999141.ts:47:11

Found 4 errors.

This made me think that it would be cool to automatically open a eval-ts-compilation buffer and paste the errors there, so people can use already existing goto line and highlighting plugings in compilation/comint modes.

Define all special forms on the lisp javacript object

By default, the global lisp object has access to all lisp functions (even those defined in lisp) by calling the functions name in snake case (i.e. (my-function) -> lisp.my_function). However, special forms like let, etc do not work automatically. They need a little manual 'glue'.

In 'rust_src/src/prelim.js' there is an object called specialForms. To define a special form, you just need to add a key to that array with the form name, and a function to call for the form. For 99% of special forms, this will just be the special function evalForm, and will look like:

const setq = (...args) => evalForm(lisp.q.setq,  ...args);

const specialForms = {
// .....
setq,
// ...
};

Don't destroy the JS runtime on JS parse error

If you have a top-level unhandled Promise reject, the Deno runtime is poisoned and needs to be re-created (see our calls to EmacsMainJsRuntime::destroy_worker()). This is unfortunately just how Deno works, and likely isn't going to change denoland/deno#7013 . However, we currently call destroy_worker for parse errors in addition to promise rejections, which is not needed.

JavaScript Open GL Binding (WebGL)

This is a little "pie in the sky", but I think its worth tracking. The easiest way to do this is generate v8 bindings to opengl manually or via a scripting solution.

To truly call it WebGL, there would be security concerns that we likely won't address due to their high complexity - this would be more like "JavaScript OpenGL bindings that have API parity with WebGL".

Deno is interested in this as well, so if we were to make bindings it would make sense to make it a separate crate so it could be contributed.

Run elisp on deno with deno's GC/Allocation

Steps:

  1. Compile elisp to js
  2. Change elisp object allocation to be performed by deno to make GC work.
  3. adapt some of the elisp primitives like let to be compatible with deno's execution model. Note that we need the let primitive in order to make dynamic binding work, in order words it cannot be replaced with JS counterpart.

Open questions:

C-g handling - this can be implemented by elisp -> JS compiler by inserting appropriate commands in case we cannot simply interrupt the execution.

emacs-ng doesn't work with doom-emacs

> Synchronizing your config with Doom Emacs...
  > Regenerating envvars file at "~/.emacs.d/.local/env"
    ✓ Successfully generated "~/.emacs.d/.local/env"
  > Installing packages...
    - Checked out auto-minor-mode: 17cfa1b54800fdef2975c0c0531dad34846a5065
    → Building auto-minor-mode...
    x There was an unexpected error
      Message: Symbol's value as variable is void
      Data: (void-variable . comp-deferred-compilation-deny-list)
      Backtrace:
        (member entry comp-deferred-compilation-deny-list)
        (if (member entry comp-deferred-compilation-deny-list) comp-deferred-compi
        (let ((entry (car --dolist-tail--))) (if (member entry comp-deferred-compi
        (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (if (member en
        (let ((--dolist-tail-- (list (concat "\\`" (regexp-quote doom-local-dir) "
        ((closure (t) nil (let ((--dolist-tail-- (list (concat "\\`" (regexp-quote
        (eval-after-load-helper "/usr/local/share/emacs/28.0.50/lisp/emacs-lisp/co
        (run-hook-with-args eval-after-load-helper "/usr/local/share/emacs/28.0.50
        (do-after-load-evaluation "/usr/local/share/emacs/28.0.50/lisp/emacs-lisp/
        (load-with-code-conversion "/usr/local/share/emacs/28.0.50/lisp/emacs-lisp
    ! Extended backtrace logged to .local/doom.error.log

Hook up JS Repl Mode

A Repl mode designed to use the JS engine within emacs-no would be a great addition to the editor.

Make a JS/TS "Getting Started" Guide

This would be different from #71 in that it would be more of a new user tutorial "step-by-step" series the user could follow to make emacs-ng do things, vs. a description of function behavior.

Self Contained Release/Github Release Flow

Basic idea - it would be really nice if we could have a release channel through GitHub, in addition to more traditional package managers. Emacs requires a large number of shared libraries to operate, however we can work around this by packaging the shared libraries with the application and setting the rpath of the emacs executable.

I was able to build self-contained POC of this by using CFLAGS="-Wl,-rpath,shared -Wl,--disable-new-dtags" ./configure --with-nativecomp. I used ldd ./src/emacs to determine what shared libs emacs needs, and their locations. I copied those libraries (excluding a few specific exceptions like libc) into /usr/local/bin/shared. I then tar/gz'd the installed emacs files and transferred that file to a fresh ubuntu install, un tar/gz'd it into /usr/local/bin and ran emacs. By default, emacs in will install in /usr/local/bin. You can change this via configure, however, as far as I can tell, the self contained emacs installation's path needs to match the path that was passed to configure. This means that the user still need to untar/gz our self contained binary into /usr/local/bin, which should not be an issue.

Ideally, we will have stable releases we can tag manually, and an automatic nightly or weekly build. Version 1 of this can be a manual process that is performed via a script, or maybe even a Rust executable.

Merge OSX improvements

I don't use it myself, but I know there are some features and improvements for mac that won't be merged upstream for whatever reasons. Pull requests are welcome.

Support Windows Builds

Currently, I strongly suspect that windows builds are broken, though I have not verified. I know that there is code is ng_async.rs that will not compile with windows due to references to std::fs::unix::{...}. We will have to compile that functionality out of ng_async, but that will not effect major features like Deno or WebRender.

emacs-ng has error with doom emacs install

after succesfully build emacs-ng

run make install

and then
i've copied nextstep/Emacs.app to Application folder

and tryng to install doom emacs
runs doom install

got these errors

> ~/.emacs.d/bin/doom install
Debugger entered--Lisp error: (void-variable comp-ctxt)
  (type-of comp-ctxt)
  (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags)
  (and (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags) t)
  (progn (and (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags) t))
  (or (progn (and (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags) t)) (signal 'wrong-type-argument (list 'comp-cstr-ctxt comp-ctxt)))
  (progn (or (progn (and (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags) t)) (signal 'wrong-type-argument (list 'comp-cstr-ctxt comp-ctxt))) (aref comp-ctxt 4))
  (if range (progn (or (progn (and (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags) t)) (signal 'wrong-type-argument (list 'comp-cstr-ctxt comp-ctxt))) (aref comp-ctxt 4)) (progn (or (progn (and (memq (type-of comp-ctxt) cl-struct-comp-cstr-ctxt-tags) t)) (signal 'wrong-type-argument (list 'comp-cstr-ctxt comp-ctxt))) (aref comp-ctxt 3)))
  (let ((mem-h (if range (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... comp-ctxt))) (aref comp-ctxt 4)) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... comp-ctxt))) (aref comp-ctxt 3))))) (let* ((mem-res (and t (gethash srcs mem-h)))) (if mem-res (progn (progn (progn (or (progn ...) (signal ... ...)) (let* (...) (aset v 1 ...))) (progn (or (progn ...) (signal ... ...)) (let* (...) (aset v 2 ...))) (progn (or (progn ...) (signal ... ...)) (let* (...) (aset v 3 ...))) (progn (or (progn ...) (signal ... ...)) (let* (...) (aset v 4 ...)))) mem-res) (let ((res (apply #'comp-cstr-union-1-no-mem range dst srcs))) (puthash srcs (comp-cstr-copy res) mem-h) res))))
  comp-cstr-union-1(t #s(comp-cstr :typeset (t) :valset nil :range nil :neg nil) #s(comp-cstr :typeset (number) :valset nil :range nil :neg nil) #s(comp-cstr :typeset (marker) :valset nil :range nil :neg nil))
  apply(comp-cstr-union-1 t #s(comp-cstr :typeset (t) :valset nil :range nil :neg nil) (#s(comp-cstr :typeset (number) :valset nil :range nil :neg nil) #s(comp-cstr :typeset (marker) :valset nil :range nil :neg nil)))

Add support for Nix/NixOS

I'm a NixOS user and I'm creating this just to track adding support to install emacs-ng using nix since NixOS users can only install it that way.

This is how emacs is built on nix ATM: https://github.com/nix-community/emacs-overlay

I think if we have emacs-ng shipped, it could be really useful for an easy install for final users where it'd be just:

nix-env -iA emacs-ng

note: nix is a package manager that can be installed in any unix based OS.

s-expression syntax for JavaScript?

Despite being way more fluent in JavaScript, I always look forward to writing Lisp in Emacs simply because it's such fun. So when I found out about this project, I was immediatley reminded of eslisp, which bills itself as an un-opinionated S-expression syntax and macro system for JavaScript.

I was wondering whether there had been any thought in the direction of using JavaScript/TypeScript with a syntax (and what that syntax makes possible) closer to Lisp?

Feature: Have #[async_stream] use a threadpool

The #[async_stream] macro is designed to allow ease of async programming. However, the current implementation spins up a thread per stream. I think that it would be better suited to using a thread pool, to avoid the creation of excessive threads.

fails to install rustup toolchain

Hey, awesome project - v excited about having first-class async support in emacs.

I cloned and tried to build on my linux (xubuntu 18.04) desktop, where I've previously compiled native-comp from source. However, I got a failure when trying to install the rust-toolchain specified in the file.

Possibly a rustup bug rather than emacs-ng. Thought it might be worth reporting.

petr_tik@merluzon:/tmp/emacs-ng master $
rustup toolchain install nightly-2020-09-20-x86_64-unknown-linux-gnu
warning: downloading with complete profile isn't recommended unless you are a developer of the rust language
info: syncing channel updates for 'nightly-2020-09-20-x86_64-unknown-linux-gnu'
info: latest update on 2020-09-20, rust version 1.48.0-nightly (f68e08933 2020-09-19)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'llvm-tools-preview'
info: downloading component 'miri'
info: downloading component 'rls'
info: downloading component 'rust-analysis'
info: downloading component 'rust-analyzer-preview'
info: downloading component 'rust-docs'
info: downloading component 'rust-src'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustc-dev'
info: downloading component 'rustc-docs'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: using up to 500.0 MiB of RAM to unpack components
info: installing component 'clippy'
info: installing component 'llvm-tools-preview'
 20.0 MiB /  20.0 MiB (100 %)  16.6 MiB/s in  1s ETA:  0s
info: installing component 'miri'
info: installing component 'rls'
info: installing component 'rust-analysis'
info: installing component 'rust-analyzer-preview'
info: installing component 'rust-docs'
 13.2 MiB /  13.2 MiB (100 %)  13.1 MiB/s in  1s ETA:  0s
info: installing component 'rust-src'
info: installing component 'rust-std'
 21.4 MiB /  21.4 MiB (100 %)  14.9 MiB/s in  1s ETA:  0s
info: installing component 'rustc'
 55.3 MiB /  55.3 MiB (100 %)  16.0 MiB/s in  3s ETA:  0s
info: installing component 'rustc-dev'
 92.6 MiB /  92.6 MiB (100 %)  15.2 MiB/s in  6s ETA:  0s
info: installing component 'rustc-docs'
info: rolling back changes
error: failed to install component: 'rustc-docs-x86_64-unknown-linux-gnu', detected conflict: '"share/doc/rust/html/rustc"'

Move the generated bindings in separate project

The generated bindings are 6mb file and they pretty much kill all the IDE tools and cargo check (e. g. each change triggers recompilation of the bindings). This PR is POC #12 and proves that it can be done. Ideally, no other code except the bindings should be in that project.

Investigation: Lower default js-tick-rate

The current default of 0.1 seconds seems to high to me upon using emacs-ng more. It seems to cause periodic hitching that is notable.

We should do some testing to see how much time a call to tick_js takes with no pending callback. If its too expensive, we should change the default tick rate to something larger.

Investigation: Improve build speed

We use the entire deno crate, which includes a lot of functionality I suspect we are not using. This issue is to track investigating if we can reduce build time, especially for release builds. On slower machines they can take a long time.

Make rust first class extension language.

ATM you can use rust only as a core language. It will be nice if you can develop rust packages and load them from emacs. This is similar to @ubolonton's Rust Modules but without the dynamic modules overhead and with richer access to emacs internals.

Write typescript definition files for lisp functions

I believe there can be a lot of value by defining definition files for built-in elisp functions to allow for better type safety at compile time within the scripting layer.

This would be a good 'first time' contributor project, and the help would be appreciated.

The way to implement this would be to write a file called elisp.ts, with the following pattern:

main.ts

import * as elisp from './elisp.ts';

let b: elisp.Buffer = elisp.getBufferCreate('basic');
// would error on compile ->
// let b: elisp.Buffer = elisp.getBufferCreate(6);
elisp.setBuffer(b); // would error on compile for setBuffer(4.3333);
elisp.insert("Hello World");
let s: string = elisp.bufferString();

elisp.ts

declare global { var lisp: any };

// We will define a type for our type lisp objects (Lisp_Buffer, Lisp_Process, etc.)
export type Buffer = {
    len?: number
};

export function bufferString(): string {
    return lisp.buffer_string();
}

export function setBuffer(b: Buffer): void {
    lisp.set_buffer(b);
}

export function getBufferCreate(s: string): Buffer {
    return lisp.get_buffer_create(s);
}

export function insert(s: string): void {
    lisp.insert(s);
}

Investigation: Integrate JS Debugger with dap-mode

Currently, we have tested using the JS debugger with Chrome's debugger, however it would be excellent to have JS debugging within emacs-ng using tools like dap-mode. In theory, this should be very possible, but we would need to hook it up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.