summaryrefslogtreecommitdiff
Commit message (Expand)AuthorAgeFilesLines
* elisp: boot: Replace removed FRAME-PROCEDURE with FRAME-PROCEDURE-NAME....This is a follow-up to commit e139accb530c970c989b3d53d5a8a22fd75437fc. * module/language/elisp/boot.el (backtrace-frame, guile-backtrace): Use FRAME-PROCEDURE-NAME instead of FRAME-PROCEDURE. wip-elispRicardo Wurmus2020-05-191-8/+2
* loader: Handle interned constants as well as plain bytevectors....This is a follow-up to commit b04e79283ada9a6af05552dda6446a0934c0fbe2. * libguile/loader.c (scm_load_thunk_from_memory): Extract constants only if the object is a pair. Ricardo Wurmus2020-05-171-6/+15
* temporarily disable elisp exception tests...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * test-suite/tests/elisp-compiler.test ("catch without exception" test) ("catch and throw" test, "unwind-protect" test): Switch from pass-if to expect-fail. Robin Templeton2020-04-041-3/+3
* ignore 'expect-fail' forms in elisp tests...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * test-suite/tests/elisp-compiler.test (compile-test): Update to support expect-fail. Robin Templeton2020-04-041-1/+3
* update cross-compilation test...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * test-suite/tests/cross-compilation.test (test-target): Update it. Robin Templeton2020-04-041-2/+2
* use standard evaluator...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm: Remove import of "(language tree-il eval)". (defmacro): Use standard "eval". * module/language/elisp/runtime.scm: Remove import of "(language tree-il eval)". Robin Templeton2020-04-042-3/+1
* guile-backtrace function...* module/language/elisp/boot.el (guile-backtrace): New function extracted from `backtrace'. (backtrace): Use it. Robin Templeton2020-04-041-2/+5
* use guile eval for elisp tree-il...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (eval): Update with simplified definition. * module/language/elisp/compile-tree-il.scm: Import "(language tree-il eval)". (eval-when-compile): Use eval-elisp. (defmacro): Use eval-tree-il. * module/language/elisp/runtime.scm: Import "(language tree-il eval)". (eval-elisp): Use "eval" to evaluate compiled form within current-module. Robin Templeton2020-04-043-9/+6
* deprecated eval-when situations...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (eval-when): Update. Robin Templeton2020-04-041-3/+6
* execute top level require forms...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (require): New compiler macro. Robin Templeton2020-04-041-0/+4
* top level fixes...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (compile-pair): Use compile-expr-1 instead of compile-expr. Robin Templeton2020-04-041-2/+2
* only evaluate top-level macro definitions...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (defmacro): Check to see whether toplevel? is true before compiling a macro. Robin Templeton2020-04-041-3/+4
* degenerate let forms...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (let): Conditionally invoke make-body within make-dynlet or just on its own depending on whether or not dynamic? is null?. Robin Templeton2020-04-041-6/+8
* eval-when...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (progn): Use compile-expr-1 instead of compile-expr. (toplevel?, compile-time-too?): New fluids. (eval-when): New special form. (compile-expr, compile-expr-1): compile-expr is renamed to compile-expr-1, and compile-expr is now a procedure which, if fulid-ref of toplevel? is true, will call compile-expr-1 with toplevel? fulid bound to #f. Otherwise, continue with compile-expr-1. (compile-tree-il): Set toplevel? and compile-time-too? fluids to #t during evaluation. Robin Templeton2020-04-041-4/+41
* fset macro...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (fset): Update to handle macros. Robin Templeton2020-04-041-0/+12
* use defsubst...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (null, consp, listp, car, cdr): Update to use defsubst. (atom): New variable, using defsubst. Robin Templeton2020-04-041-5/+13
* defsubst...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (defsubst): New macro. Robin Templeton2020-04-041-0/+13
* compiler macros...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (%define-compiler-macro): New macro. * module/language/elisp/compile-tree-il.scm: New function. (compile-pair): Update to handle %compiler-macro condition. Robin Templeton2020-04-042-0/+24
* defconst, defvar: proclaim special at compile-time...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (defconst, defvar): Use proclaim-special!. Robin Templeton2020-04-041-0/+3
* elisp @@ macro...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (@@): New macro. Robin Templeton2020-04-041-0/+3
* compile-elisp fn...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/runtime.scm (compile-elisp): New procedure. Robin Templeton2020-04-041-0/+5
* fix symbol-function...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/runtime.scm (symbol-function): Adjust function. Robin Templeton2020-04-041-4/+4
* restore special operator handling...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/boot.el (progn, eval-when-compile, if, defconst, defvar, setq, let, flet) (labels, let*, function, defmacro, quote): Removed. * module/language/elisp/compile-tree-il.scm (special-operators): Removed. (compound-pair): Use find-operator to check if a 'special-operator rather than checking the now removed special-operators table. * module/language/elisp/runtime.scm (defspecial): Update to use set-symbol-function! Robin Templeton2020-04-043-44/+7
* define-module for elisp special modules...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/runtime.scm (value-slot-module) (function-slot-module, plist-slot-module): Update to set #:pure to #t. Robin Templeton2020-04-041-3/+3
* constant-interning fix...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/system/vm/assembler.scm (intern-constant): Switch from using vector-ref/immediate to make-short-immediate. Robin Templeton2020-04-041-1/+2
* defvar affects default value...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/compile-tree-il.scm (defvar): Refactor appropriately. Robin Templeton2020-04-041-2/+5
* symbol default value procedures...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/runtime.scm: (symbol-default-bound?, symbol-default-value, set-symbol-default-value!): New procedure aliases. Export their symbols. (emacs!): Update to accept new parameters dref, dset, dboundp. Robin Templeton2020-04-041-1/+13
* read nil/t as #nil/#t...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/lexer.scm (lex): Update to handle #nil / #t. Robin Templeton2020-04-041-12/+18
* elisp updates...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/bindings.scm (get-lexical-binding) (get-function-binding): Use cadr instead of fluid-ref on slot. (with-fluids**): New procedure. (with-symbol-bindings, with-function-bindings): Use with-fluids**. Also stop using "make-fluid", use "(list #f #f)" instead as default lexical-bindings hashtable value. (with-lexical-bindings): Drop the error checking for invalid targets. * module/language/elisp/boot.el (defun, save-excursion) (save-current-buffer, save-restriction, track-mouse, setq-default) (catch, condition-case): New macros. (omega, eval, gensym, interactive, autoload-do-load, fset, prin1) (backtrace-frame, backtrace, %set-eager-macroexpansion-mode): New functions. (null, consp, listp, car, cdr, make-symbol, signal): Wrap in eval-and-compile. (prog1, cond, or, while): Update to make use of gensym. (unwind-protect): Switch from funcall to %funcall. (%functionp): Rename from functionp. (%indirect-function): Update to use %functionp instead of functionp. Add check for if object is null, signaling void-function. Instead of calling symbol-function directly, call via %funcall from the module "(language elisp runtime)". (fset): Significant additions and refactoring. (gload): Renamed from fload. (defvaralias, nthcdr, nth, eq): Move functions to a different location. (eq): Also stop using null. (dolist): Remove quasiquoting, build list manually. (random): Fix indentation. (progn, eval-when-compile, if, defconst, defvar, setq, let, flet) (labels, let*, function, defmacro, quote): Protect as special operators by raising error if invoked as a function. * module/language/elisp/compile-tree-il.scm: Import "(ice-9 format)". Export compile-%function. (lexical-binding, handle-var-def, defun, valid-symbol-list-arg?) (process-options!): Remove. (reference-variable): Adjust functions passed to access-variable. (global?): Drop module parameter, use value-slot instead. (ensure-globals!, set-variable!, parse-body-1, parse-lambda-list) (compile-lambda, defconst, defvar, let, let*, compile-pair): Refactor. (reference-function): Use '(elisp-functions) instead of function-slot. (bind-lexically?): Drop module parameter, simplify. (make-dynlet): Switch from using make-primcall to make-call. (find-operator): Switch from using resolve-interface/resolve-module to using function-slot. (if, defconst, defvar, let, let*, flet, labels, guile-ref) (guile-private-ref, guile-primitive, defmacro, `, quote, %funcall) (%set-lexical-binding-mode): Add error checking. (setq): Pass in args to report-error. (function): Simplified, now calling %function. (%function): New function, based on prior "function". Refactor, including adding support for matching against a closure. (%set-lexical-binding-mode): Switch from using fluid-set! to set-lexical-binding-mode. (special-operators): New variable. Build from following for-each statement. (compile-tree-il): Drop call to "process-options!" * module/language/elisp/lexer.scm: Import "(language elisp runtime)". (lex): Switch from using "list->string" to "make-lisp-string". * module/language/elisp/runtime.scm: Use modules "(ice-9 format)", "(system base compile)". Remove from export list list, removing ensure-fluid!, symbol-fluid!, set-symbol-fluid!. Add to export list ensure-dynamic!, symbol-name, symbol-plist, set-symbol-plist!, bind-symbol, symbol-desc, proclaim-symbol! special? emacs! unbound, lexical-binding?, set-lexical-binding-mode, log!, eval-elisp, local-eval-elisp, make-lisp-string, lisp-string? (make-list-string, lisp-string?) New function aliases. (value-slot-module, function-slot-module): Adjust module resolution. (nil_, t_): New variables. (ensure-fluid!, symbol-fluid, set-symbol-fluid!): Removed. (lexical-binding, unbound): New variables. (lexical-binding?, set-lexical-binding-mode, unbound, dynamic?) (make-dynamic, dynamic-ref, dynamic-set!, dynamic-unset!) (dynamic-bound?, dynamic-bind, ensure-present!, ensure-desc!) (schemify, symbol-name, symbol-desc, ensure-dynamic!, symbol-dynamic) (set-symbol-plist!, special?, proclaim-special!, emacs!, eval-elisp) (make-string): New procedures. (symbol-value): Use dynamic-ref! instead of fluid-ref!. (set-symbol-value!): Use dynamic-set! instead of fluid-set!. (symbol-function, set-symbol-function!, symbol-bound?) (symbol-fbound?, makunbound!, fmakunbound!): Refactor, including adjusting how module resolution is being done. * module/language/elisp/spec.scm: Import module "(system vm vm)". Setup elisp-symbols, elisp-functions, elisp-plists. Use "set-default-vm-engine!" and "set-vm-engine!" to be set to 'debug. (elisp): Comment out joiner. Robin Templeton2020-04-046-263/+583
* guile-snarf fix...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * libguile/guile-snarf.in (modern_snarf): Adjusted. Robin Templeton2020-04-041-1/+2
* prefer compilers earlier in list...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/system/base/compile.scm (find-language-joint): Change order of cond. Robin Templeton2020-04-041-2/+2
* allow arbitrary constants in cps...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/cps/types.scm (constant-type): No longer error if type not determined. Return &all-types instead. Robin Templeton2020-04-041-2/+1
* guile-private-ref...* module/language/elisp/compile-tree-il.scm (compile-guile-private-ref): New special operator. BT Templeton2020-04-042-0/+8
* multiple obarrays...* libguile/symbols.c (lookup_uninterned_symbol) (lookup_interned_latin1_symbol, lookup_interned_utf8_symbol) (scm_i_str2symbol): Take an `obarray' argument. All callers changed. (scm_make_obarray, scm_find_symbol, scm_intern, scm_unintern) (scm_obarray_for_each): New functions. BT Templeton2020-04-042-16/+87
* check symbols constants uninterned...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/system/vm/assembler.scm (intern-constant, link-data): Update to check "symbol-interned?". Robin Templeton2020-04-041-1/+1
* intern arbitrary constants...(Best-ability ChangeLog annotation added by Christopher Allan Webber.) * libguile/loader.c (load_thunk_from_memory): Refactor, adding "constants" argument and passing to "init" if appropriate. (load_thunk_from_file): Call "load-thunk-from-memory" with "constants" set to #f. (scm_load_thunk_from_memory): Instead of a bytevector, accept a cons of "(bytevector . constants)", where constants is either a vector or #f. Pass this into "load_thunk_from_memory". * module/language/bytecode/spec.scm: Adapt printer. * module/language/cps/compile-bytecode.scm (compile-bytecode): New variable. * module/system/repl/command.scm (disassemble): Adapt to expect pair which includes bytevector as its car. * module/system/vm/assembler.scm <asm>: Add "to-file?" slot. (fresh-block): New variable. (make-assembler): Adapt to expect "to-file?" keyword argument. (intern-constant): Support "asm-to-file?" in checks. (emit-init-constants, link-data): Likewise. (link-assembly): Update logic for handling "(bytevector . constants)" pair, as well as the expectations of its invocation by compile-bytecode. Robin Templeton2020-04-045-16/+64
* Remove CFLAGS from snarfcppopts....libguile/Makefile.am (snarfcppopts): Remove CFLAGS Robin Templeton2020-04-041-1/+1
* Fix fixpoint computation in compute-significant-bits...* module/language/cps/specialize-numbers.scm (preserve-eq?): New helper. (sigbits-union): Use the new helper. Fixes bugs.gnu.org/38486. Thanks to Zack Marvel for the bug report and Matt Wette for tracking it down. Andy Wingo2020-03-231-2/+23
* Revert "Fix build on platforms where the stack grows upwards."...This patch was only meant to apply to the 3.0 branch. Andy Wingo2020-03-131-1/+1
* Bump version for Guile 2.2.7....* GUILE-VERSION (GUILE_MICRO_VERSION): Increment. (LIBGUILE_INTERFACE_REVISION): Increment. Ludovic Courtès2020-03-071-2/+2
* Update NEWS....* NEWS: Update. Ludovic Courtès2020-03-071-1/+56
* Bump user-visible copyright years to 2020...* module/ice-9/command-line.scm (version-etc): * module/scripts/compile.scm (show-version): Bump to 2020. Andy Wingo2020-03-072-4/+4
* Actually run '00-repl-server.test'....This is a followup to ddcab06f20525d975503d8d9611e02021fb0dff1. Until now the tests would always be marked as unresolved because TMPDIR was removed before the client and server had been started. * test-suite/tests/00-repl-server.test (call-with-repl-server): Remove initial call to 'rmdir'. Add calls to 'delete-file' and 'rmdir' in the unwind handler. Ludovic Courtès2020-03-071-1/+2
* Fix build on platforms where the stack grows upwards.... * libguile/continuations.c (scm_dynthrow): Fix missing mra parameter to grow_stack for SCM_STACK_GROWS_UP. Signed-off-by: Ludovic Courtès <ludo@gnu.org> John Paul Adrian Glaubitz2020-02-121-1/+1
* Handle GMP allocations through libgc and remove bignum finalizers....This significantly speeds up loads that create lots of bignums, like (language cps slot-allocation) for files with many top-level definitions. Compiling such a file is typically 2.5 times faster. See <https://lists.gnu.org/archive/html/guile-devel/2020-02/msg00023.html>. * libguile/numbers.c (custom_gmp_malloc): Use 'scm_gc_malloc_pointerless' instead of 'scm_malloc'. (custom_gmp_realloc): Use 'scm_gc_realloc'. (custom_gmp_free): Remove call to 'free'. (make_bignum): Use 'scm_gc_malloc' instead of 'scm_gc_malloc_pointerless'. Call 'scm_i_set_finalizer' only when SCM_INSTALL_GMP_MEMORY_FUNCTIONS is false. Ludovic Courtès2020-02-121-7/+12
* Remove duplicate procedure in slot-allocation.scm....* module/language/cps/slot-allocation.scm (add-live-slot) (kill-dead-slot, compute-slot): Move higher up in the file. (compute-shuffles): Remove duplicate 'add-live-slot' procedure. Ludovic Courtès2020-02-121-15/+12
* texinfo: Properly render @acronym in plain text....Fixes <https://bugs.gnu.org/37846>. Reported by Christopher Baines <mail@cbaines.net>. * module/texinfo/plain-text.scm (acronym): New procedure. (tag-handlers): Change 'acro' handle to ACRONYM, and add 'acronym' handler. * test-suite/tests/texinfo.plain-text.test ("stexi->plain-text") ["acronym", "recursive acronym"]: New tests. Ludovic Courtès2020-02-122-2/+31
* texinfo: Add '*line-width*' fluid to control line wrapping....* module/texinfo/plain-text.scm (*line-width*): New variable. (wrap*): Honor it. * doc/ref/texinfo.texi (texinfo plain-text): Document it. * test-suite/tests/texinfo.plain-text.test: New file. * test-suite/Makefile.am (SCM_TESTS): Add it. Ludovic Courtès2020-02-124-5/+49
* Fix check for rl_get_keymap...This lets Guile build on OS X (tested on 10.14) with the system-provided libreadline. * acinclude.m4 (GUILE_READLINE): Check for rl_get_keymap_name instead of rl_get_keymap. The system provided libreadline is an alias to libedit, which has _keymap but not _keymap_name, and Guile uses both. * guile-readline/readline.c: Adjust the include guard. Daniel Llorens2020-02-122-7/+9
* 00-repl-server.test: don't use fixed path for socket...* test-suite/tests/00-repl-server.test (make-tempdir): Add. (call-with-repl-server): Store socket in a make-tempdir dir. Rob Browning2020-01-221-4/+17