[Bese-devel] ARNESI: defmethod/cc expansion trouble (with patch)
Alexey Antipov
door at lcpi.ru
Mon Aug 7 07:19:10 UTC 2006
Hi!
Because of the fact that defmethod/cc body expanded at runtime it also
expands with changed values of dynamic variables (*package*) which
affect expansions, and the result differs from normal evaluation.
Short test:
(in-package :cl-user)
(defpackage :pack1 (:use :cl))
(defpackage :pack2 (:use :cl))
(in-package :pack1)
(defmacro intern-symbol (symbol)
`',(intern (symbol-name symbol) *package*))
(defmethod fn ()
(symbol-package (intern-symbol foo)))
(arnesi:defmethod/cc fn/cc ()
(symbol-package (intern-symbol foo)))
(in-package :pack2)
(pack1::fn) => #<PACKAGE "PACK1">
(arnesi:with-call/cc (pack1::fn/cc)) => #<PACKAGE "PACK2">
I checked latest arnesi on sbcl 0.9.15 and clisp 2.38 with same result.
We can preserv *package* at compile time and restore it when we need to
expand method body. Patch supplied.
-------------- next part --------------
New patches:
[preserve *package* in defmethod/cc
Alexey Antipov <door at lcpi.ru>**20060807071411
so we get same behavior in normal & interpreted code
] {
hunk ./src/call-cc/generic-functions.lisp 38
- `(progn
- (setf (fdefinition/cc ',name 'defmethod/cc) t)
- (defgeneric/cc ,name ,(if arguments
- (convert-to-generic-lambda-list arguments)
- '()))
- (defmethod ,name , at qlist ,arguments
- ,(when arguments
- `(declare (ignorable ,@(extract-argument-names arguments :allow-specializers t))))
- ,@(when (stringp (first body))
- (list (pop body)))
- (make-instance 'closure/cc
- :code (walk-form '(lambda ,(clean-argument-list arguments)
- , at body)
- nil nil)
- :env nil))))))
+ (let ((package *package*))
+ `(progn
+ (setf (fdefinition/cc ',name 'defmethod/cc) t)
+ (defgeneric/cc ,name ,(if arguments
+ (convert-to-generic-lambda-list arguments)
+ '()))
+ (defmethod ,name , at qlist ,arguments
+ ,(when arguments
+ `(declare (ignorable ,@(extract-argument-names arguments :allow-specializers t))))
+ ,@(when (stringp (first body))
+ (list (pop body)))
+ (make-instance 'closure/cc
+ :code (let ((*package* ,package))
+ (walk-form '(lambda ,(clean-argument-list arguments)
+ , at body)
+ nil nil))
+ :env nil)))))))
}
Context:
[Added SYMBOL-MACROLET and MACROLET tests
Hoan Ton-That <hoan at ton-that.org>**20060729234554]
[Unwalk SYMBOL-MACROLET-FORM
Hoan Ton-That <hoan at ton-that.org>**20060729233014]
[Unwalk MACROLET-FORM
Hoan Ton-That <hoan at ton-that.org>**20060729232936]
[Export more of the walker
Hoan Ton-That <hoan at ton-that.org>**20060729031048]
[Pass keywords to print-unreadable-object from defprint-object
attila.lendvai at gmail.com**20060710194835]
[Export the accessors and slots of the walker
Hoan Ton-That <hoan at ton-that.org>**20060712053922
If there are any conflicts with other packages,
please tell me and I'll comment it out with that
package name in the comment.
]
[Added AWHILE
Hoan Ton-That <hoan at ton-that.org>**20060712050434]
[Fix bug with EXTRACT-ARGUMENT-NAMES, thanks to Attila Lendvai
Hoan Ton-That <hoan at ton-that.org>**20060707031316]
[Added defprint-object
attila.lendvai at gmail.com**20060704094407]
[Fix typo and backward compatibility of loggers
attila.lendvai at gmail.com**20060703194333]
[Turned the previous logger change into a foll-blown compile-time-level on loggers
attila.lendvai at gmail.com**20060703172247
Added a compile-time-level slot to loggers. Log expressions whose level
is below the compile-time-level of the logger at compilation will macroexpand
to NIL.
In other words, setting the compile time level to +debug+ will drop
all dribble messages so that they can't even be enabled at runtime.
]
[allegro quick fix
Henrik Hjelte <henrik at evahjelte.com>**20060703163119]
[Added defalut implementation of encoding-keyword-to-native and declare the 'wrapper' functions inline
Marco Baringer <mb at bese.it>**20060703154620]
[Add an enabledp check in deflogger at compile-time
attila.lendvai at gmail.com**20060703125918
This means that when a logger is defined with a given level then
the messages below this level will be expanded to nil at compile time,
so they'll have no performance penalties at runtime.
An example setup:
(deflogger foo :level +debug+) ; +debug+ level at compile-time
(setf (log.level 'foo) +info+) ; set runtime level to +info+
(foo.dribble "foo: ~S" (some-expensive-calculation)) ; expands to nil
(foo.debug ...) ; will log if the runtime level is appropiate
]
[Fix walking FLET
Hoan Ton-That <hoan at ton-that.org>**20060703093546]
[Fix walking PROGV
Hoan Ton-That <hoan at ton-that.org>**20060703084010]
[Document lisp1.lisp
Hoan Ton-That <hoan at ton-that.org>**20060703083820]
[Fix unbound variable handling in DEFUN1 and DEFMETHOD1
Hoan Ton-That <hoan at ton-that.org>**20060703080015]
[Refactor functions into lambda-list.lisp
Hoan Ton-That <hoan at ton-that.org>**20060703075940]
[Fix thinko in previous io.lisp patch
attila.lendvai at gmail.com**20060630142709]
[Make stuff in io.lisp encoding-aware
attila.lendvai at gmail.com**20060630131314]
[Moved make-displaced-array from ucw to arnesi
attila.lendvai at gmail.com**20060630012918]
[Export encoding-keyword-to-native
attila.lendvai at gmail.com**20060630012811]
[Don't export WHILE and UNTIL.
Marco Baringer <mb at bese.it>**20060621153819
Arnesi if often used in conjunction with iterate, which also exports
the symbols while and until. If you want while and until just do
arnesi::while or import the symbols manually.
]
[io.lisp depends on string.lisp
Marco Baringer <mb at bese.it>**20060621104245]
[Updated read-string-from-file's docstring
Marco Baringer <mb at bese.it>**20060621104204]
[Added copy-array
Marco Baringer <mb at bese.it>**20060621102333]
[Added `while' and `until'
Hoan Ton-That <hoan at ton-that.org>**20060620125308]
[Added `aif2', which tests on the second value
Hoan Ton-That <hoan at ton-that.org>**20060620094448]
[Deleted listify and consify from the exports
attila.lendvai at gmail.com**20060618113838]
[Added :execute to enable-bracket-reader eval-when
attila.lendvai at gmail.com**20060617180148]
[Added external-format keyword to read-string-from-file
attila.lendvai at gmail.com**20060617180142]
[Added eval-when support for the unwalker, fixed some lisp1 bugs
Hoan Ton-That <hoan at ton-that.org>**20060613120932]
[Support missing result forms in cond-bind and acond
Chris Dean <ctdean at kyluka.com>**20060601165635
The CLHS says that COND results in:
the values of the forms in the first clause whose test-form yields
true, or the primary value of the test-form if there are no forms in
that clause
Meaning (among other things) that
(cond (1)) => 1
This is a patch to give COND-BIND and ACOND the same behavior. Before
this patch they would return NIL.
]
[Make sure the walker doesn't call fboundp on non symbols
Marco Baringer <mb at bese.it>**20060531195843]
[Export `_'
Hoan Ton-That <hoan at ton-that.org>**20060530105625]
[Convenience, Lisp-1 support, and partial application syntax
Hoan Ton-That <hoan at ton-that.org>**20060522112451]
[Added queue->list method (Patch by: Chris Dean <ctdean at sokitomi.com>)
Marco Baringer <mb at bese.it>**20060517090847]
[Added docstring on log-file slot
Marco Baringer <mb at bese.it>**20060517090828]
[Fix enable-bracket-reader
attila.lendvai at gmail.com**20060515173051]
[Define apply-lambda/cc method on symbols.
Marco Baringer <mb at bese.it>**20060515135717
This new method just calls apply-lambda/cc passing it the symbol-function of the operator.
]
[Added remf-keywords macro to remove keyword args
attila.lendvai at gmail.com**20060511150622]
[implement walker for eval-when
Marco Baringer <mb at bese.it>**20060509145223]
[Change defclss-struct to allow class-options
Marco Baringer <mb at bese.it>**20060509144410]
[Fix the return value of compose for fn > 4
attila.lendvai at gmail.com**20060502104311]
[Skip nil's in strcat
attila.lendvai at gmail.com**20060213230204]
[Export *warn-undefined*
Marco Baringer <mb at bese.it>**20060427131316]
[Signal warning for undefined functions
Marco Baringer <mb at bese.it>**20060427131248]
[Added the *warn-undenifed* variable.
Marco Baringer <mb at bese.it>**20060427131102
We can now check for undenfined varibales/functions at walk time
]
[Find-symbol SYSTEM::*HTTP-ENCODING* only if there is a SYSTEM package.
Maciek Pasternacki <maciekp at japhy.fnord.org>**20060425195734]
[Added the REBIND macro (Patch by: Attila Lendvai <attila.lendvai at gmail.com>)
Marco Baringer <mb at bese.it>**20060423105838]
[Pass the env argument to make-load-form
Marco Baringer <mb at bese.it>**20060423105632]
[Fix encoding-keyword-to-native for clisp. (Patch by: Pascal Bourguignon <pjb at informatimago.com>)
Marco Baringer <mb at bese.it>**20060413140523]
[src/posixenv.lisp: define `getenv'
Luca Capello <luca at pca.it>**20060412132403
ATM, this is the only POSIX function present in src/posixenv.lisp.
I also added "getenv" to the list of features in the ASDF file, in
order to depend on it in other project (first of all, UCW).
]
[Use class-slots instead of our custom 'walk class hierarchy and collect slot defs' code.
Marco Baringer <mb at bese.it>**20060405120648
This change should fix problems with allegro. Nathan Bird reported
this and suggested the proper solution.
]
[Unwalker mistakes
Hoan Ton-That <hoan at ton-that.org>**20060401084803]
[Let the implementation use the default value. SBCL seems to only accept a real readtable there.
levente.meszaros at gmail.com**20060325233110]
[Change with-package read-macro specifier so that it returns a progn.
Marco Baringer <mb at bese.it>**20060324115026]
[Added read-macros.lisp to asdf
Marco Baringer <mb at bese.it>**20060324114744]
[Added doc strings for the read-macro stuff
Marco Baringer <mb at bese.it>**20060324113104]
[Added bracket reader and with-package function
Marco Baringer <mb at bese.it>**20060324111610]
[Dropped our trim-string function, common lisp already provides string-trim
Marco Baringer <mb at bese.it>**20060324104938]
[Fix typo in walk.lisp
Marco Baringer <mb at bese.it>**20060313222523]
[Added print-object method for log-category
Marco Baringer <mb at bese.it>**20060313222510]
[Added copy-stream function
Marco Baringer <mb at bese.it>**20060313222455]
[matcher ext :AND, :ACCESSORS, :PLIST
Kilian Sprotte <ml13 at onlinehome.de>**20060304195313]
[A code UnWalker
Hoan Ton-That <hoan at ton-that.org>**20060301075456]
[Typo in do-all-elements macro when the indexe parameter is nil
Marco Baringer <mb at bese.it>**20060226184405]
[Added a print-object method for function-argument-form objects
Marco Baringer <mb at bese.it>**20060226184343]
[Make the cc interpreter 'see' special variables
Marco Baringer <mb at bese.it>**20060224155153
If a symbol is globally bound, and isn't locally overridden, we assume
it's a global special and treat it as such.
]
[Added enqueue-or-move-to-front method to the lru-queue class
Marco Baringer <mb at bese.it>**20060224154525]
[Added lru-queue
Marco Baringer <mb at bese.it>**20060224145245]
[Implement peek-queue
Marco Baringer <mb at bese.it>**20060224145231]
[Create the queue's buffer to be 1+ the required size
Marco Baringer <mb at bese.it>**20060224142145
The length of the buffer is actually one less than the total number of
elements we can hold. Since the :size initarg means 'numbor of
elements we can store without resizing' we need to create the buffer
slightly larger.
]
[Added vector based queue implementation
Marco Baringer <mb at bese.it>**20060224141820]
[Added missing ignore declarations
Marco Baringer <mb at bese.it>**20060224121944]
[escape html unicode characters
henrik.hjelte at poboxes.com*-20060215141526
Not all unicode characters fit the latin-1 encoding, escaping them helps out.
]
[escape html unicode characters
henrik.hjelte at poboxes.com**20060215141526
Not all unicode characters fit the latin-1 encoding, escaping them helps out.
]
[Eliminate runtime call to eval when exporting special variables from cc code to lisp code.
levente.meszaros at gmail.com**20060214210552]
[Split stream-log-append into brief-stream-log-appender and verbose-stream-log-appender
Marco Baringer <mb at bese.it>**20060213185541
The stream-log-appender was wasting too much space on extremly
reptative information. The new hierarchy contains three classes: the
abstract base class stream-log-appender; a verbose out class (exactly
the same output as the original stream-log-appender) called
verbose-stream-log-appender and a quieter append called
brief-stream-log-appender.
NB: This change breaks backwards compatability. All occurences of
"make-instance 'stream-log-appender" will need to be replaced with
"make-instance 'verbose-stream-log-appender"
]
[Fix infinite loop in (setf log.level)
Marco Baringer <mb at bese.it>**20060213173230
argh. we'd defined a method for (setf log.level) specialized on
SYMBOLs, this method called (get-logger symbol) and passed that back
again to (setf log.level). However, when get-logger returned nil
(which happens the symbol didn't specify a logging category) we'd
again call the same method (since nil is a symbol), and not the one
specialized on category objects :(
]
[conflict resolution with levente's special variable patch
Marco Baringer <mb at bese.it>**20060213181217]
[Rework test cases for special variable handling.
Levente Mц╘szц║ros <melevy at freemail.hu>**20060211205154]
[Make importing and exporting specials explicit functions, plus support importing in defun/cc.
Levente Mц╘szц║ros <melevy at freemail.hu>**20060211205043]
[Add test cases for dynamic variable handling
Levente Mц╘szц║ros <melevy at freemail.hu>**20060209215158]
[Fixed bug in with-call/cc's handling of multiple-value-call. (Reported by: Matthew Danish <mdanish at andrew.cmu.edu>)
Marco Baringer <mb at bese.it>**20060211165654
When the function in a multiple-value-call form was a literal lambda
we were accidentaly passing _all_ the arguments passed to m-v-c to the
function (the first of these arguments is always the function itself).
]
[(setf log.level) needs to, as all setf methods, return the new-value
Marco Baringer <mb at bese.it>**20060210154819]
[Add test cases for dynamic variable handling
Levente Mц╘szц║ros <melevy at freemail.hu>**20060209213739]
[Support capturing dynamic variables from lisp via declare.
Levente Mц╘szц║ros <melevy at freemail.hu>**20060208214015]
[Makes visible the dynamic variables defined in cc code for normal lisp code.
Levente Mц╘szц║ros <melevy at freemail.hu>**20060206224603
This has some performance issues when dynamic variables are defined in cc code.
]
[Support (declare (special var)) declarations and put variable values in the dynamic environment.
Levente Mц╘szц║ros <melevy at freemail.hu>**20060206224208
This patch allows to access dynamic variables defined in cc code from cc code.
]
[Ecase->case typo.
Maciek Pasternacki <maciekp at japhy.fnord.org>**20060130230302]
[minor docstring fix
Marco Baringer <mb at bese.it>**20060202145727]
[Move test suite into its own package
Marco Baringer <mb at bese.it>**20060202114156]
[Change names of parameters in MULF and DIVF to match documentation
Marco Baringer <mb at bese.it>**20060202114140]
[Added log.level methods specialized on symbols
Marco Baringer <mb at bese.it>**20060202114058]
[Added time.lisp
Marco Baringer <mb at bese.it>**20060202114049]
[Export levenshtein-distance
Marco Baringer <mb at bese.it>**20060202114018]
[Use FiveAM's new random testing for the parse-float test
Marco Baringer <mb at bese.it>**20060124140012]
[Reimplement intern-concat to accept only strings and symbols as string designators.
Marco Baringer <mb at bese.it>**20060124135505
Simply using PRINC can have different semantics on different
lisps. Explicitly allowing only strings and symbols resoles this issue
and makes clearer what inter-concat is intended to deal with. (passing
objects or numberns to inter-concat was never intentional anyway).
]
[Fix thinko in definition of test-op
Marco Baringer <mb at bese.it>**20060124131555]
[Update copyright dates
Marco Baringer <mb at bese.it>**20060123125009]
[Added test for escape/unescape-uri using fiveam's new random checking
Marco Baringer <mb at bese.it>**20060120110709]
[In recent clisps the convert-bytes-to-string function has been renamed to convert-string-from-bytes
Marco Baringer <mb at bese.it>**20060113113449]
[Stop trying to convert keywords directly to charset symbols.
Marco Baringer <mb at bese.it>**20060113113430]
[Enable unicode on clisp only if :UNICODE is in *features*
Marco Baringer <mb at bese.it>**20060109140827]
[Don't use uppercase names for list-matcher symbols. not all lisps have :upcase readtable-case (Reported by: BAM <solnul at gmx.de>)
Marco Baringer <mb at bese.it>**20051220000456]
[Drop char->hex-value. digit-char-p does the exact same thing.
Marco Baringer <mb at bese.it>**20051220000406]
[Implement QUIT for allegro. (Patch by: BAM <solnul at gmx.de>)
Marco Baringer <mb at bese.it>**20051220000154]
[Use the new octets-to-string function in http.lisp
Marco Baringer <mb at bese.it>**20051218124500]
[Declare char->hex-value to be inlined
Marco Baringer <mb at bese.it>**20051218124425]
[Fix previous eswitch/cswitch patch
Marco Baringer <mb at bese.it>**20051218124148]
[Conditionalize on (and sbcl sb-unicode), not just sbcl
Marco Baringer <mb at bese.it>**20051218123532]
[remove unneeded escapes
svg at surnet.ru**20051213204631]
[Implement and export STRING-TO-OCTETS and OCTETS-TO-STRING
Marco Baringer <mb at bese.it>**20051218123215
Currently these do something only on SBCL and CLISP.
]
[Use &body, instead of &rest, in the lambda lists of ESWITCH and CSWITCH
Marco Baringer <mb at bese.it>**20051218122248
This change makes slime add the proper indentation for these forms
]
[Export extract-argument-names and walk-lambda-list
Marco Baringer <mb at bese.it>**20051211135308]
[Fix generation of lambda list from a list of argument-parameter objects (in the walker)
Marco Baringer <mb at bese.it>**20051211135245]
[Fix handling of &allow-other-keys and lambda lists with only (&key &allow-other-keys)
Marco Baringer <mb at bese.it>**20051211131145]
[Also make a debug logger
Chris Dean <ctdean at sokitomi.com>**20051209072439]
[Fix spelling in log.lisp comments
Chris Dean <ctdean at sokitomi.com>**20051209072321]
[Added :wrap-aronud method types ot wrapping-standard method combination
Marco Baringer <mb at bese.it>**20051204162319]
[added a walker for load-time-value
Marco Baringer <mb at bese.it>**20051201170253]
[Document the slots of the log-category class
Marco Baringer <mb at bese.it>**20051201170222]
[Fix walking of macrolet forms
Marco Baringer <mb at bese.it>**20051126162913]
[include walk.lisp in qbook's autput
Marco Baringer <mb at bese.it>**20051126162859]
[minor fix in wrapping-standard's docstring
Marco Baringer <mb at bese.it>**20051126162847]
[Minor change in with-unique-names' docstring
Marco Baringer <mb at bese.it>**20051125173827]
[Make docs/Makefile easier to adapat to different lisps and systems
Marco Baringer <mb at bese.it>**20051125173801]
[Document the #L read macro
Marco Baringer <mb at bese.it>**20051125173744]
[Removed all texinfo syntax from docstrings
Marco Baringer <mb at bese.it>**20051125173708]
[Added a walker for unwind-protect
Marco Baringer <mb at bese.it>**20051118193044]
[Make the 'return from unknown block' error a restartable condition
Marco Baringer <mb at bese.it>**20051118193020]
[Added lispworks specific walk handlers
Marco Baringer <mb at bese.it>**20051115122956]
[yet another yet another trace cc thinko
Marco Baringer <mb at bese.it>**20051112122930]
[We had an etypecase form with a T clasue, changed to typecase (Reported by: Luigi Panzeri <matley at muppetslab.org>)
Marco Baringer <mb at bese.it>**20051111171221]
[Yet another trace-statement patch by our resident Q&A expert. (Patch by: Aleksandar Bakic <a_bakic at yahoo.com>)
Marco Baringer <mb at bese.it>**20051110195739]
[More fixs to trace-statements (Patch by: Aleksandar Bakic <a_bakic at yahoo.com>)
Marco Baringer <mb at bese.it>**20051110115953]
[thinko in cc trace-statement (Patch by: Aleksandar Bakic <a_bakic at yahoo.com>)
Marco Baringer <mb at bese.it>**20051110094851]
[Drop the :ALL option for *trace-cc*
Marco Baringer <mb at bese.it>**20051108131116]
[Added a few more trace statements
Marco Baringer <mb at bese.it>**20051108130243]
[Added *trace-cc* parameter (and supporitng code). See docstring for details.
Marco Baringer <mb at bese.it>**20051108125255]
[Escape { and } in boring regexps
Marco Baringer <mb at bese.it>**20051105152003]
[Removed qbook include to non existent file scr/cps.lisp
Marco Baringer <mb at bese.it>**20051105151143]
[Remove duplicate export of arnesi:form
Marco Baringer <mb at bese.it>**20051105151130]
[Changed lambda list of IF-BIND so that slime will ident it better.
Marco Baringer <mb at bese.it>**20051105150656]
[Exported all the symbols related to the walker
Marco Baringer <mb at bese.it>**20051028122648]
[remove debian/ folder
Luca Capello <luca at pca.it>**20051028103802
The CL-Debian group decided to avoid Debian native packages.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310665
]
[CMUCL lexical-variables global var detection
svg at surnet.ru**20051024191615]
[Added dyn-env parameter to sbcl's call to apply-lambda/cc
Marco Baringer <mb at bese.it>**20051021153948]
[Added tests for parse-float
Marco Baringer <mb at bese.it>**20051021153936]
[Specify result element-type in radix-values
Marco Baringer <mb at bese.it>**20051018102502]
[Typo in last patch
Marco Baringer <mb at bese.it>**20051018102126]
[Rewrote parse-float in order to support tho :decimal-character keyword parameter
Marco Baringer <mb at bese.it>**20051018101950]
[Minor fixup to wrapping-standard's docstring
Marco Baringer <mb at bese.it>**20051014094112]
[Remove ignore declarations for unused variable DYNAMIC-ENVIRONMENT
Marco Baringer <mb at bese.it>**20051012141417]
[lex-env support for lispworks on windows (Patch by: Mac Chan <emailmac at gmail.com>)
Marco Baringer <mb at bese.it>**20051009103654]
[Added the :return-suffix parameter to starts-with
Marco Baringer <mb at bese.it>**20051007190426]
[Add dynamic-environment to the cc interpreter
Marco Baringer <mb at bese.it>**20051007174859
This patch changes the api for evaluate/cc (and associated functions)
by adding a dynamic-environment parameter and fixs the catch handler
to use this dynamic-environment (and not the lexical environment).
]
[Added nfasl to .boring
Marco Baringer <mb at bese.it>**20051007174421]
[Teach the walker to handle global symbol macros
Marco Baringer <mb at bese.it>**20050925155112]
[Added if-does-not-exist parameter to write-string-to-file
Marco Baringer <mb at bese.it>**20050925155049]
[More lexical-(variables|functions) for lispworks (Patch by: Asbjц╦rn Bjц╦rnstad <asbjxrn at bjxrnstad.net>)
Marco Baringer <mb at bese.it>**20050906140657]
[Fix silly mistake in previous docstring for defmethod/cc patch
Marco Baringer <mb at bese.it>**20050903140254]
[When a defmethod/cc form has somethnig which looks like a comment we 'pass' that to the underlying defmethod form
Marco Baringer <mb at bese.it>**20050901100340]
[Added generic error-reporting method on evaluate/cc
Marco Baringer <mb at bese.it>**20050901100314]
[More lexical-(variables|functions) methods for lispworks (Patch by: Asbjц╦rn Bjц╦rnstad <asbjxrn at bjxrnstad.net>)
Marco Baringer <mb at bese.it>**20050831094750]
[Fix handling of special operator FUNCTION in the faco of defun/cc functions
Marco Baringer <mb at bese.it>**20050831094727]
[enhanced defmethod/cc to work in the case of a null argument list and missing body.
drewc at tech.coop**20050819201500
]
[Minor whitespace fix to previous patch
Marco Baringer <mb at bese.it>**20050827194602]
[When sb-unicode is avaible don't encode characters with codes > 127 as html entities
binarin at gmail.com**20050827134518]
[Make nunescape-as-uri accept external-format parameter
binarin at gmail.com**20050827134456]
[Use &key instead of &optional in the test suite for the cc interpreter
Marco Baringer <mb at bese.it>**20050827184725]
[Minor refactoring to avoid sbcl's "deleting unreachable code" warning
Marco Baringer <mb at bese.it>**20050827121814]
[Introduce the distinction between a keyword argument's name and the effective-keyword used to pass the value.
Marco Baringer <mb at bese.it>**20050827111706
we now can tell if the user supplied a keyword name (different from
the argument's name) and proceed accordingly. this patch works around
cmucl's bug in the handling of generic lambda lists.
]
[Fix LEXICAL-FUNCTIONS on cmucl (Patch by: Fabricio Chalub <chalub at gmail.com>)
Marco Baringer <mb at bese.it>**20050827110128]
[Added hash-table-keys and hash-table-values functions
Marco Baringer <mb at bese.it>**20050825062935]
[Added in a few more tests
Marco Baringer <mb at bese.it>**20050824165751]
[Fix local-function application
Marco Baringer <mb at bese.it>**20050824164938]
[Added lexical-variables and lexical-functions for Allegro. (Patch by: Slawek Zak <slawek.zak at gmail.com>)
Marco Baringer <mb at bese.it>**20050824123802]
[Added delete/remove family of functions to common-lisp-cc
Marco Baringer <mb at bese.it>**20050817100128]
[fixed typo
smoof-ra at elder-gods.org**20050816174806]
[Added copyright notices
Marco Baringer <mb at bese.it>**20050816141938]
[Added initial version of lex-env function for lispworks
Marco Baringer <mb at bese.it>**20050816141839]
[Convert (setf env (register env ...)) into (extend env ...)
Marco Baringer <mb at bese.it>**20050816084720]
[Moved register/lookup/(setf lookup) into one-liners.lisp, added the extend macro
Marco Baringer <mb at bese.it>**20050816084654]
[more usefull declaration objects
smoof-ra at elder-gods.org**20050815202603]
[Change the name of the walker handler for atom so that it doesn't used to walk forms whose car is CL:ATOM.
Marco Baringer <mb at bese.it>**20050812114613]
[Added required specifier :primary to cc-standard method combination
Marco Baringer <mb at bese.it>**20050812114343
This prevents people from accidentaly using defmethod on a cc generic
function. You must now either use defmethod/cc (which retains the same
API as before), or pass the :primary method qualifier (and if you do
we'll assume you know what you're doing).
]
[Update the list of exported symbols
Marco Baringer <mb at bese.it>**20050812102709]
[Two minor indentation fixups
Marco Baringer <mb at bese.it>**20050812102429]
[Remove type declarations form join-string (ucw passes in strings which violate some of the type declarations)
Marco Baringer <mb at bese.it>**20050812102333]
[JOIN-STRINGS was not returning the result :(
Marco Baringer <mb at bese.it>**20050812070730]
[Added more tests for cc-standard method combination
Marco Baringer <mb at bese.it>**20050811152516]
[Make the arguments to a continuation all option (the equivalent of evaluating (values))
Marco Baringer <mb at bese.it>**20050811152449]
[Added cc definintions of common standard functions whcih take functions as parameters (assoc and mapXYZ)
Marco Baringer <mb at bese.it>**20050811152400]
[Added missing cleane-argument-list function and tests
Marco Baringer <mb at bese.it>**20050811130722]
[Fix generic/method/function lambda list handling and manipulation in walker and cc-interpreter
Marco Baringer <mb at bese.it>**20050811130002]
[Added support for &key, &allow-other-keys in lambda/cc (and therefore defun/cc and defmethod/cc)
Marco Baringer <mb at bese.it>**20050810140725]
[keyword-function-argument-form is not a subclass of optional-argument-form, even though they are superficially similar
Marco Baringer <mb at bese.it>**20050810140659]
[Move debugging code into DEFK where have access to the name of the continuation we're calling (as apposed to KLAMBDA)
Marco Baringer <mb at bese.it>**20050810121305]
[Refactor cc-interpreter into a few smaller files in the call-cc directory
Marco Baringer <mb at bese.it>**20050810104819]
[Refactor FOLD-STRING (Patch by: Janis Dzerins <jdz at dir.lv>)
Marco Baringer <mb at bese.it>**20050810103438]
[the fdefinition/cc table must remeber, other than the def, whether it was a function or a method (since we treat those two differently)
Marco Baringer <mb at bese.it>**20050810101541]
[Added :method-combination option to the expaniosn of the defgeneric/cc macro
Marco Baringer <mb at bese.it>**20050810101446]
[Added *debug-evaluate/cc* and related functions
Marco Baringer <mb at bese.it>**20050810063228]
[Use fedinition/cc, not fdefinition, for defun/cc
Marco Baringer <mb at bese.it>**20050810055126]
[Typo in name of k-for-apply/cc/optional-argument-default-value continuation
Marco Baringer <mb at bese.it>**20050810055105]
[Don't use GET so that we don't break package locks. Add now function fdefinition/cc
Marco Baringer <mb at bese.it>**20050810054327
Basically it's a bad idea to use #'get and #'(setf get) on standard
symbols, however this is something we're going to want to do. We know
have our own hash-table (*cc-functions*) which maps symbols to closure
objects.
]
[ method combination
smoof-ra at elder-gods.org**20050810035825]
[make closure/cc a funcallable instance (in sbcl)
smoof-ra at elder-gods.org**20050809182900
funcalling a closure/cc will just call it with a toplevel continuation
that way cc closures can be called totally transparently by non-cc code
as long as the cc-closure doesn't call/cc.
]
[Added copyright notice to cc-interpreter.lisp
Marco Baringer <mb at bese.it>**20050809151738]
[Remove occurences of 'cps' in the api. We don't actually cps transforme anymore so this is misleading.
Marco Baringer <mb at bese.it>**20050809125933]
[Remove 'cps' from test suite, replace it with 'call/cc'
Marco Baringer <mb at bese.it>**20050809104818]
[Rename cps.lisp to cc-interpreter.lisp
Marco Baringer <mb at bese.it>**20050809104737]
[Fix typo in fold-strings' docstring
Marco Baringer <mb at bese.it>**20050809083006]
[Trivial change to the name of the gensym generated by DOLIST*
Marco Baringer <mb at bese.it>**20050809061102]
[Fix lexical-variables and lexical-functions on clisp
Marco Baringer <mb at bese.it>**20050807223244]
[Use FDEFINITION instead of SYMBOL-FUNCTION to get a function from a function name.
Marco Baringer <mb at bese.it>**20050807222932]
[Make sure we only pass symbols to functions like GET and MACRO-FUNCTION
Marco Baringer <mb at bese.it>**20050807222905]
[Implement lexical-functions for CLISP
Marco Baringer <mb at bese.it>**20050807204738]
[Implement lexical-variables and lexical-functions for NIL environments
Marco Baringer <mb at bese.it>**20050807204711]
[Remove arnesi.el from ssytem def
Marco Baringer <mb at bese.it>**20050807204654]
[Fix evaluation of #'(foo bar) in cps interpreter
Marco Baringer <mb at bese.it>**20050806182653]
[Delete arnesi.el. SLIME is perfectly able to figure out the indententation by itself.
Marco Baringer <mb at bese.it>**20050807075500]
[aparently global variables can be found in sbcl lexical environments
smoof-ra at elder-gods.org**20050804164859]
[Implement environment-p and lexical-variables for CLISP
Marco Baringer <mb at bese.it>**20050804165821]
[Make the lexenv stuff use generic-functions and methods
Marco Baringer <mb at bese.it>**20050804161857]
[Fixup lexical-variables and lexical-functions for OpenMCL
Marco Baringer <mb at bese.it>**20050804152727
This patch causes lexical-variables to no longer return ignored
variables and symbol-macrolets. We've also implemented
lexical-functions (though we do some hackery to convert functions
names to something "normal" (ie SETF::|FOO::BAR| ==> (SETF FOO::BAR))
]
[Typo in lexical-variables for sbcl (we were accessing lexenv-funs instead of lexenv-vars)
Marco Baringer <mb at bese.it>**20050804152051]
[Change lexical-variables for sbcl so that it doesn't return ignored variables
Marco Baringer <mb at bese.it>**20050804150841]
[Fix lexical-variables for cmucl to not return ignored variables
Marco Baringer <mb at bese.it>**20050804150256]
[Typo in previous patch
Marco Baringer <mb at bese.it>**20050804150242]
[Implement lexical-functions for cmucl
Marco Baringer <mb at bese.it>**20050804143350]
[recognise flets from the lexical environment (on sbcl)
smoof-ra at elder-gods.org**20050803222732]
[Rewrite multiple-value-setf so that my simple mind can understand it.
Marco Baringer <mb at bese.it>**20050803104652]
[Added cps evaluation of THE forms
Marco Baringer <mb at bese.it>**20050803092059]
[minor comment fixup
Marco Baringer <mb at bese.it>**20050803085322]
[Moved defclass progv-form to keep the walker classes defined in alphabetical order
Marco Baringer <mb at bese.it>**20050803085254]
[Added walker class for THE forms
Marco Baringer <mb at bese.it>**20050803085210]
[allow new special forms to be added to the walker by shadowing *walker-handlers*
smoof-ra at elder-gods.org**20050802165355]
[Minor spacing fixs to the previous patch
Marco Baringer <mb at bese.it>**20050802152421]
[progv
smoof-ra at elder-gods.org**20050802150342]
[labels can have declarations inside the body
smoof-ra at elder-gods.org**20050801193433]
[declares needs to be copied in the labels handler just like the other lambda-function-form slots
smoof-ra at elder-gods.org**20050801193107]
[oops i forgot to actually make the declaration-form instances
smoof-ra at elder-gods.org**20050801185641]
[initial support for remembering declarations
smoof-ra at elder-gods.org**20050801184329
this patch adds a mixin called implicit-progn-with-declare-mixin and
uses it instead of implicit-progn-mixin in all the places that allow declares.
It has slot which should contain a list of the declares at the top of the
implicit-progn. This patch doesn't do anything clever with the declares,
it just creates declaration-form objects and points their source slots
at the original declares, however it would be easy to modify parse-declaration
to generate more usefull declaration objects.
]
[Call the property :FEATURES, not FEATURES
Marco Baringer <mb at bese.it>**20050729103229]
[Rename asdf property version to features, add "cps-interpreter"
Marco Baringer <mb at bese.it>**20050728120238]
[dont need to register allow-other-keys because its not a binding
smoof-ra at elder-gods.org**20050727153603]
[fixed type name mismatch for allow-other-keys-function-arguement-form
smoof-ra at elder-gods.org**20050727152456]
[defmethod arguments should be ignorable, not ignore (openmcl warns whenever you ignore a specialized argument)
Marco Baringer <mb at bese.it>**20050726090308]
[Typo in extract-argument-names
Marco Baringer <mb at bese.it>**20050726090256]
[Fix generation of defmethod froms from defmethod/cc; added tests
Marco Baringer <mb at bese.it>**20050726085226]
[Fix handling of optional arguments in apply-cps-lambda
Marco Baringer <mb at bese.it>**20050726085155]
[More tests
Marco Baringer <mb at bese.it>**20050723133158]
[Fix a bug in the handling of the case when LOOKUP finds a value for a name but the value is NIL
Marco Baringer <mb at bese.it>**20050723133106]
[Export the symbol KALL
Marco Baringer <mb at bese.it>**20050723133052]
[Change the test for constant-form'ness in walk.lisp
Marco Baringer <mb at bese.it>**20050723113019]
[Extend the walker to handle #'(setf foo) function names
Marco Baringer <mb at bese.it>**20050723104431]
[Fix bug in the lambda generated for method forms
Marco Baringer <mb at bese.it>**20050720144450]
[Added ignore declarations to defun/cc and defmethod/cc to make the compiler happy
Marco Baringer <mb at bese.it>**20050720110112]
[Temporarily comment out the log tests
Marco Baringer <mb at bese.it>**20050720092312]
[Rename (optional|keyword|rest)-argument-form classes to include the -form suffix
Marco Baringer <mb at bese.it>**20050720092124]
[Allow defun/cc defined functions te be called outside of a with-call/cc
Marco Baringer <mb at bese.it>**20050720091826]
[Added support for &optional arguments in cps closures
Marco Baringer <mb at bese.it>**20050720091658]
[Added defgeneric/cc
Marco Baringer <mb at bese.it>**20050719153441]
[Move the error checking code for lambda arguments into apply, not lambda (in cps interpreter)
Marco Baringer <mb at bese.it>**20050719153121]
[More cps tests
Marco Baringer <mb at bese.it>**20050719152327]
[Fix openmcl's definition of lexical-variables to deal with ccl::definition-environment
Marco Baringer <mb at bese.it>**20050719152230]
[Added support to the cps interpreter forl communicating with lexical variables
Marco Baringer <mb at bese.it>**20050707094608]
[walk.lisp depends on lexenv.lisp
Marco Baringer <mb at bese.it>**20050707093140]
[added support for walking local varibales in the lexical environment
Marco Baringer <mb at bese.it>**20050707093027
this applies to all those variables defined the envorinment object
grabbed via an &environment macro argument.
]
[mistyped #+openmcl in lexenv.lisp
Marco Baringer <mb at bese.it>**20050707092959]
[added src/lexenv.lisp to arnesi.asd
Marco Baringer <mb at bese.it>**20050707091127]
[Rename src/environment.lisp
Marco Baringer <mb at bese.it>**20050707091114]
[Initial version of environment.lisp
Marco Baringer <mb at bese.it>**20050707091019]
[Minor docstring fixup for with-call/cc
Marco Baringer <mb at bese.it>**20050707090619]
[Big patch including all the cps interpreter stuff upto now
Marco Baringer <mb at bese.it>**20050707083739]
[Fix bug in handling of defclass-struct's :predicate option
Marco Baringer <mb at bese.it>**20050706105324]
[Initial Import
Marco Baringer <mb at bese.it>**20050706101657
This import moves arnesi from arch to darcs. Nothing has actually changed since
bese-2004 at common-lisp.net/arnesi--dev--1.4--patch-14
]
[added arch stuff to boring file
Marco Baringer <mb at bese.it>**20050706101630]
[Setup boring file
Marco Baringer <mb at bese.it>**20050706100535]
Patch bundle hash:
3b27a72fdeb4e144b08ccb219b0e00b360813a07
More information about the bese-devel
mailing list