Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust? #1

Closed
manuel-uberti opened this issue Nov 23, 2016 · 3 comments
Closed

Rust? #1

manuel-uberti opened this issue Nov 23, 2016 · 3 comments

Comments

@manuel-uberti
Copy link

Sorry, this is not an issue, just a question out of curiosity: does that r before emacs mean you're about to do something in Rust with this repo?

I'll be VERY interested in this. :-)

@manuel-uberti
Copy link
Author

Ok, I was too quick, the README explains it all.

@ninrod
Copy link

ninrod commented Nov 24, 2016

Wait, what? I did not get it even from reading the readme. Do you want to build emacs with rust?

@Wilfred
Copy link
Collaborator

Wilfred commented Jan 11, 2017

I've fleshed out the README.md, and just written an announcement blog post: http://www.wilfred.me.uk/blog/2017/01/11/announcing-remacs-porting-emacs-to-rust/

Wilfred pushed a commit that referenced this issue Mar 2, 2017
This fixes some infinite loops that cannot be quitted out of,
e.g., (defun foo () (nth most-positive-fixnum '#1=(1 . #1#)))
when byte-compiled and when run under X.  See:
http://lists.gnu.org/archive/html/emacs-devel/2017-01/msg00577.html
This also attempts to keep the performance improvements I recently
added, as much as possible under the constraint that the infloops
must be caught.  In some cases this fixes infloop bugs recently
introduced when I removed immediate_quit.
* src/alloc.c (Fmake_list):
Use rarely_quit, not maybe_quit, for speed in the usual case.
* src/bytecode.c (exec_byte_code):
* src/editfns.c (Fcompare_buffer_substrings):
* src/fns.c (Fnthcdr):
* src/syntax.c (scan_words, skip_chars, skip_syntaxes)
(Fbackward_prefix_chars):
Use rarely_quit so that users can C-g out of long loops.
* src/callproc.c (call_process_cleanup, call_process):
* src/fileio.c (read_non_regular, Finsert_file_contents):
* src/indent.c (compute_motion):
* src/syntax.c (scan_words, Fforward_comment):
Remove now-unnecessary maybe_quit calls.
* src/callproc.c (call_process):
* src/doc.c (get_doc_string, Fsnarf_documentation):
* src/fileio.c (Fcopy_file, read_non_regular, Finsert_file_contents):
* src/lread.c (safe_to_load_version):
* src/sysdep.c (system_process_attributes) [GNU_LINUX]:
Use emacs_read_quit instead of emacs_read in places where
C-g handling is safe.
* src/eval.c (maybe_quit): Move comment here from lisp.h.
* src/fileio.c (Fcopy_file, e_write):
Use emacs_write_quit instead of emacs_write_sig in places where
C-g handling is safe.
* src/filelock.c (create_lock_file): Use emacs_write, not
plain write, as emacs_write no longer has a problem.
(read_lock_data): Use emacs_read, not read, as emacs_read
no longer has a problem.
* src/fns.c (rarely_quit): Move to lisp.h and rename to
incr_rarely_quit.  All uses changed..
* src/fns.c (Fmemq, Fmemql, Fassq, Frassq, Fplist_put, Fplist_member):
* src/indent.c (compute_motion):
* src/syntax.c (find_defun_start, back_comment, forw_comment)
(Fforward_comment, scan_lists, scan_sexps_forward):
Use incr_rarely_quit so that users can C-g out of long loops.
* src/fns.c (Fnconc): Move incr_rarely_quit call to within
inner loop, so that it catches C-g there too.
* src/keyboard.c (tty_read_avail_input): Remove commented-out
and now-obsolete code dealing with interrupts.
* src/lisp.h (rarely_quit, incr_rarely_quit): New functions,
the latter moved here from fns.c and renamed from rarely_quit.
(emacs_read_quit, emacs_write_quit): New decls.
* src/search.c (find_newline, search_buffer, find_newline1):
Add maybe_quit to catch C-g.
* src/sysdep.c (get_child_status): Always invoke maybe_quit
if interruptible, so that the caller need not bother.
(emacs_nointr_read, emacs_read_quit, emacs_write_quit):
New functions.
(emacs_read): Rewrite in terms of emacs_nointr_read.
Do not handle C-g or signals; that is now for emacs_read_quit.
(emacs_full_write): Replace PROCESS_SIGNALS two-way arg
with INTERRUPTIBLE three-way arg.  All uses changed.
jeandudey pushed a commit to jeandudey/remacs that referenced this issue May 29, 2017
The recent changes to src/casefiddle.c cause build failure as seen
below:

    Starting program: /home/npostavs/src/emacs/emacs-bootstrapping/src/temacs
	--batch --load loadup bootstrap
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/usr/lib/libthread_db.so.1".
    Loading loadup.el (source)...
    Using load-path (/home/npostavs/src/emacs/emacs-bootstrapping/lisp
	/home/npostavs/src/emacs/emacs-bootstrapping/lisp/emacs-lisp
	/home/npostavs/src/emacs/emacs-bootstrapping/lisp/language
	/home/npostavs/src/emacs/emacs-bootstrapping/lisp/international
	/home/npostavs/src/emacs/emacs-bootstrapping/lisp/textmodes
	/home/npostavs/src/emacs/emacs-bootstrapping/lisp/vc)
    Loading emacs-lisp/byte-run (source)...
    Loading emacs-lisp/backquote (source)...
    Loading subr (source)...
    Loading version (source)...
    Loading widget (source)...
    Loading custom (source)...
    Loading emacs-lisp/map-ynp (source)...
    Loading international/mule (source)...
    Loading international/mule-conf (source)...

    lread.c:3914: Emacs fatal error: assertion failed: !NILP (Vpurify_flag)

    Breakpoint 1, terminate_due_to_signal at emacs.c:363
    363	  signal (sig, SIG_DFL);
    (gdb) bt
    #0  0x0000000000579826 in terminate_due_to_signal at emacs.c:363
    remacs#1  0x000000000060ec33 in die at alloc.c:7352
    remacs#2  0x000000000066db40 in intern_c_string_1 at lread.c:3914
    remacs#3  0x0000000000576884 in intern_c_string at lisp.h:3790
    remacs#4  0x00000000005dc84f in prepare_casing_context at casefiddle.c:69
    remacs#5  0x00000000005dd37f in casify_object at casefiddle.c:311
    remacs#6  0x00000000005dd47f in Fcapitalize at casefiddle.c:356
    remacs#7  0x00000000006325ac in eval_sub at eval.c:2219
    remacs#8  0x0000000000632368 in eval_sub at eval.c:2184
    remacs#9  0x000000000063446c in apply_lambda at eval.c:2875
    remacs#10 0x00000000006329af in eval_sub at eval.c:2294
    remacs#11 0x000000000062d462 in Fprogn at eval.c:449
    remacs#12 0x000000000062d4cf in prog_ignore at eval.c:461
    remacs#13 0x000000000062f19c in Fwhile at eval.c:982
    remacs#14 0x00000000006321f4 in eval_sub at eval.c:2172
    remacs#15 0x000000000062d462 in Fprogn at eval.c:449
    remacs#16 0x000000000062f0c4 in Flet at eval.c:963
    remacs#17 0x00000000006321f4 in eval_sub at eval.c:2172
    remacs#18 0x0000000000632963 in eval_sub at eval.c:2290
    remacs#19 0x000000000062d462 in Fprogn at eval.c:449
    remacs#20 0x000000000062f0c4 in Flet at eval.c:963
    remacs#21 0x00000000006321f4 in eval_sub at eval.c:2172
    remacs#22 0x0000000000668caa in readevalloop at lread.c:1927
    remacs#23 0x0000000000667253 in Fload at lread.c:1332
    remacs#24 0x0000000000632683 in eval_sub at eval.c:2233
    remacs#25 0x0000000000668caa in readevalloop at lread.c:1927
    remacs#26 0x0000000000667253 in Fload at lread.c:1332
    remacs#27 0x0000000000632683 in eval_sub at eval.c:2233
    remacs#28 0x0000000000631be5 in Feval at eval.c:2041
    remacs#29 0x000000000057e1af in top_level_2 at keyboard.c:1121
    remacs#30 0x000000000062ffc7 in internal_condition_case at eval.c:1324
    remacs#31 0x000000000057e1f0 in top_level_1 at keyboard.c:1129
    remacs#32 0x000000000062f51e in internal_catch at eval.c:1091
    remacs#33 0x000000000057e0ea in command_loop at keyboard.c:1090
    remacs#34 0x000000000057d6d5 in recursive_edit_1 at keyboard.c:697
    remacs#35 0x000000000057d8b4 in Frecursive_edit at keyboard.c:768
    remacs#36 0x000000000057b55b in main at emacs.c:1687

    Lisp Backtrace:
    "capitalize" (0xffffcf70)
    "format" (0xffffd130)
    "define-charset" (0xffffd370)
    "while" (0xffffd560)
    "let" (0xffffd7c0)
    "dolist" (0xffffd910)
    "let" (0xffffdb70)
    "load" (0xffffdfe0)
    "load" (0xffffe4a0)

* src/casefiddle.c (syms_of_casefiddle): Declare four new symbols:
Qtitlecase, Qspecial_uppercase, Qspecial_lowercase and
Qspecial_titlecase.
(prepare_casing_context): Use aforementioned symbols.
birkenfeld pushed a commit that referenced this issue Jul 14, 2017
* lisp/ses.el (ses-sym-rowcol):  Check that the renamed cell
hashmap has been instantiated before getting data from it.  When
editing several spreadsheets, and you have spreadsheet #1 with a
cell named `foo', and no renamed cell in spreadsheet #2, then if
you make a formula with `foo' in spreadsheet #2, not doing this
check will make an error.
(ses-cell-set-formula): Robustify versus incorrect cell references
given in the user provided formula.  An explicit error message is
provided after the action when the user gives an incorrect cell
reference, but the formula edition is not changed.  This means that
if the incorrect reference is to a cell that is created someday,
then this new cell will not have the edited cell in its reference
list.  Fixing this can still be done by editing again the first
cell formula.
(ses-relocate-symbol): Do not create symbol of referred-to cell
when this is a renamed cell.
@shaleh shaleh mentioned this issue Oct 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants