[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/ChangeLog.lexbind [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/src/ChangeLog.lexbind [lexbind] |
Date: |
Thu, 08 Jul 2004 04:14:55 -0400 |
Index: emacs/src/ChangeLog.lexbind
diff -c /dev/null emacs/src/ChangeLog.lexbind:1.1.2.3
*** /dev/null Thu Jul 8 08:12:35 2004
--- emacs/src/ChangeLog.lexbind Thu Jul 8 08:12:29 2004
***************
*** 0 ****
--- 1,70 ----
+ 2004-04-10 Miles Bader <address@hidden>
+
+ * eval.c (Fspecialp): New function.
+ (syms_of_eval): Initialize it.
+
+ 2004-04-03 Miles Bader <address@hidden>
+
+ * eval.c (Feval): If a variable isn't bound lexically, fall back
+ to looking it up dynamically even if it isn't declared special.
+
+ 2002-08-26 Miles Bader <address@hidden>
+
+ * bytecode.c (Fbyte_code): Fsub1 can GC, so protect it.
+
+ 2002-06-12 Miles Bader <address@hidden>
+
+ Lexical binding changes to the byte-code interpreter:
+
+ * bytecode.c (Bstack_ref, Bstack_set, Bstack_set2, Bvec_ref, Bvec_set)
+ (BdiscardN): New constants.
+ (exec_byte_code): Renamed from `Fbyte_code'.
+ Implement above new bytecodes.
+ Add ARGS-TEMPLATE, NARGS and ARGS parameters, and optionally use
+ them push initial args on the stack.
+ (Fbyte_code): New function, just call `exec_byte_code'.
+ Add additional optional arguments for `exec_byte_code'.
+ (Qand_optional, Qand_rest): New extern declarations.
+ * eval.c (Fcurry, Ffunctionp): New functions.
+ (syms_of_eval): Initialize them.
+ (funcall_lambda): Call `exec_byte_code' instead of Fbyte_code.
+ If a compiled-function object has a `push-args' slot, call the
+ byte-code interpreter without binding any arguments.
+ (Ffuncall): Add support for curried functions.
+ * lisp.h (Fbyte_code): Declare max-args as MANY.
+ (exec_byte_code): New declaration.
+
+ Lexical binding changes to the lisp interpreter:
+
+ * lisp.h (struct Lisp_Symbol): Add `declared_special' field.
+ (apply_lambda): Add new 3rd arg to decl.
+ * alloc.c (Fmake_symbol): Initialize `declared_special' field.
+ * eval.c (Vinterpreter_lexical_environment): New variable.
+ (syms_of_eval): Initialize it.
+ (Fsetq): Modify SYM's lexical binding if appropriate.
+ (Ffunction): Return a closure if within a lexical environment.
+ (Flet, FletX): Lexically bind non-defvar'd variables if inside a
+ lexical environment.
+ (Feval): Return lexical binding of variables, if they have one.
+ Pass current lexical environment to embedded lambdas. Handle closures.
+ (Ffuncall): Pass nil lexical environment to lambdas. Handle closures.
+ (funcall_lambda): Add new LEXENV argument, and lexically bind
+ arguments if it's non-nil. Bind `interpreter-lexenv' if it changed.
+ (apply_lambda): Add new LEXENV argument and pass it to funcall_lambda.
+ (Fdefvaralias, Fdefvar, Fdefconst): Mark the variable as special.
+ (Qinternal_interpreter_environment, Qclosure): New constants.
+ (syms_of_eval): Initialize them.
+ (Fdefun, Fdefmacro): Use a closure if lexical binding is active.
+ * lread.c (defvar_bool, defvar_lisp_nopro, defvar_per_buffer)
+ (defvar_kboard, defvar_int): Mark the variable as special.
+ (Vlexical_binding, Qlexical_binding): New variables.
+ (syms_of_lread): Initialize them.
+ (Fload): Bind `lexically-bound' to nil unless specified otherwise
+ in the file header.
+ (lisp_file_lexically_bound_p): New function.
+ (Qinternal_interpreter_environment): New variable.
+ * doc.c (Qclosure): New extern declaration.
+ (Fdocumentation, store_function_docstring): Handle interpreted
+ closures.
+
+ ;; arch-tag: 7cf884aa-6b48-40cb-bfca-265a1e99b3c5
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/ChangeLog.lexbind [lexbind],
Miles Bader <=