Commit the local DARCS CFFI repo, as well as update to today.
[CommonLispStat.git] / external / cffi.darcs / _darcs / inventories / 20060204082912-6edf7-7e2b4c6a411d31f8ea37404f91d3d13131897805.gz
blobb26429bb92f888efc8d6af69d8048fd3cbc46b6c
1 [Initial revision
2 jbielman**20050607202929] 
3 [Clean up CLISP support some, will need CVS version of CLISP to properly
4 jbielman**20050607220508
5  Clean up CLISP support some, will need CVS version of CLISP to properly
6  handle looking up symbols in all loaded foreign libraries.
7  
8  Add preliminary support for CMU CL (tested in 19b-pre on OS X).
9  
10
11 [Remove this bogus file.
12 jbielman**20050607220700] 
13 [Update the comments about the status of our CLISP support.
14 jbielman**20050607220858] 
15 [Call malloc and free directly when allocating foreign memory instead
16 jbielman**20050608065952
17  Call malloc and free directly when allocating foreign memory instead
18  of using aliens to prevent compiler notes in CMU CL.
20  Convert :POINTER to SYSTEM-AREA-POINTER instead of (ALIEN (* T)) .
22
23 [Add foreign enumerated types that automatically convert from keywords
24 jbielman**20050608070132
25  Add foreign enumerated types that automatically convert from keywords
26  to integers when passed or returned to/from foreign functions.
28
29 [Fix typo in comment.
30 jbielman**20050608072818
31  Fix typo in comment.
32  Apparently I don't know what year it is...
34
35 [Remove this file, we have the spec instead.
36 jbielman**20050610130047] 
37 [Add unit testing framework using RT.
38 jbielman**20050611052654
39  Add unit testing framework using RT.
40  Lots of manual and CFFI-SYS updates.
41  Add passing a double float to sprintf in examples.lisp.
42  Update the syntax of the nested structure example.
43  Add the INC-PTR function to the CFFI-SYS backends.
44  Add the shareable byte vector interface to the CFFI-SYS backends.
45  Started writing support for aggregate structure slots.  Not used yet.
47
48 [Remove obsolete shlibs and tests.
49 jbielman**20050611071624] 
50 [Ignore errors when Lisp implementations aren't found while testing.
51 jbielman**20050611071811] 
52 [Some progress on better CLISP support, requires CVS CLISP.
53 jbielman**20050611080628] 
54 [Clean up the way tests are run a bit.
55 jbielman**20050612082119] 
56 [Fairly major cleanup to the foreign type system:
57 jbielman**20050612082351
58  Fairly major cleanup to the foreign type system:
59  * All foreign types at the CFFI user level are now represented by CLOS
60    instances.  In particular, there is a FOREIGN-BUILT-IN-TYPE class that
61    represents a built-in type keyword understood by CFFI-SYS.
62  * Canonicalization, size, and alignment of foreign types is now handled
63    via generic functions defined on each type class.
64  * FOREIGN-ENUM is now a subclass of FOREIGN-TYPEDEF.
66
67 [Initialize foreign strings to empty in case the foreign function
68 jbielman**20050612082516
69  Initialize foreign strings to empty in case the foreign function
70  calling mechanism doesn't work.  Prevents the Lisp from running off
71  trying to convert MOST-POSITIVE-FIXNUM bytes into a string.
73
74 [Very preliminary Lispworks support.
75 jbielman**20050612082708
76  Very preliminary Lispworks support.
77  Calling foreign functions is not implemented, and will probably require
78  vendor support as a necessary primitive does not seem to be exported.
80
81 [Fix typo in method definitions of AGGREGATEP.
82 jbielman**20050612082825] 
83 [Don't bother trying to define FFI:FOREIGN-VARIABLE in CLISP 2.33.2 and
84 jbielman**20050612083348
85  Don't bother trying to define FFI:FOREIGN-VARIABLE in CLISP 2.33.2 and
86  earlier as there is no hope of supporting it anyway.
88
89 [Remove obsolete file.
90 jbielman**20050612083615] 
91 [First implementation of embedded structures and arrays, still needs tests.
92 jbielman**20050612091327] 
93 [Define and export FOREIGN-SLOT-ADDRESS.
94 jbielman**20050613094503] 
95 [Fresh-line before printing the header when running tests.
96 jbielman**20050613094608] 
97 [Add a (not-yet-working) example of complex aggregate struct slot access.
98 jbielman**20050613095632] 
99 [Add initial specification of proposed block memory operations.
100 jbielman**20050613095658] 
101 [Add proposed shareable byte vector interface.
102 jbielman**20050613105629] 
103 [Describe MAKE-SHAREABLE-BYTE-VECTOR a little.
104 jbielman**20050613131834] 
105 [Reorder the documentation for MAKE-SHAREABLE-BYTE-VECTOR to make sense.
106 jbielman**20050613132718] 
107 [Update supported implementations in README.
108 jbielman**20050613141701] 
109 [Add more unit tests for dereferencing unsigned integers and floats.
110 jbielman**20050614022318] 
111 [Add support for foreign unions and a file for their unit tests.
112 jbielman**20050614033113] 
113 [Add a simple test for foreign unions.
114 jbielman**20050614033543] 
115 [Add basic tests for foreign structures.
116 jbielman**20050623001311] 
117 [Add some commentary about the how to implement UFFI
118 jbielman**20050623054422
119  Add some commentary about the how to implement UFFI
120  array types and unions correctly.
123 [Fix comment typo.
124 jbielman**20050623055150] 
125 [Change &KEYWORD back to &OPTIONAL in MEM-VECTOR interface.
126 jbielman**20050627184929] 
127 [Export pointerp from cffi-sys (openmcl)
128 Luis Oliveira <loliveira@common-lisp.net>**20050703013832] 
129 [Preliminary foreign variables for cmucl/sbcl/openmcl/clisp
130 Luis Oliveira <loliveira@common-lisp.net>**20050704031609] 
131 [Preliminary port to Allegro CL
132 Luis Oliveira <loliveira@common-lisp.net>**20050705002935] 
133 [Add convert-external-name to cffi-allegro.lisp
134 Luis Oliveira <loliveira@common-lisp.net>**20050705025245] 
135 [implement ecl backend
136 James Bielman  <jamesjb@jamesjb.com>**20050705075324] 
137 [fix misplaced comment in ecl backend
138 James Bielman  <jamesjb@jamesjb.com>**20050705083800] 
139 [life is officially grand
140 James Bielman  <jamesjb@jamesjb.com>**20050705110100] 
141 [Fix conflict?
142 Luis Oliveira <loliveira@common-lisp.net>**20050705135052] 
143 [use low-level interface for memory access on ecl
144 James Bielman  <jamesjb@jamesjb.com>**20050705164350] 
145 [use SYSTEM-AREA-POINTER for :pointer like CMU CL
146 James Bielman  <jamesjb@jamesjb.com>**20050705193828] 
147 [use WITH-PINNED-OBJECTS instead of WITHOUT-GCING on SBCL
148 James Bielman  <jamesjb@jamesjb.com>**20050705223418] 
149 [Add (in-package #:cl-user) to package.lisp
150 Luis Oliveira <loliveira@common-lisp.net>**20050707005106] 
151 [Some notes about Allegro's internals.
152 Luis Oliveira <loliveira@common-lisp.net>**20050711022020] 
153 [Pass -q switch to clisp in Makefile
154 Luis Oliveira <loliveira@common-lisp.net>**20050711043643] 
155 [Make test depend on test-clisp and not on test-allegro
156 Luis Oliveira <loliveira@common-lisp.net>**20050711043729] 
157 [Update port for Allegro.
158 Luis Oliveira <loliveira@common-lisp.net>**20050711043851
160   - cleaned up the code/comments
161   - doh, use ff:with-stack-object in with-foreign-ptr
162   - convert-foreign-type takes a context argument because
163     system::ff-funcall (and ff:def-foreign-call) want
164     :foreign-address instead of '(* :void)
165   - better way of geting the alignment
166   - defcfun-helper, using ff:def-foreign-call
167   - changed foreign-var-ptr to be a macro
169  This still needs some more cleaning up :-) Ah and this
170  patch probably depends on the patches to DEFCFUN and DEFCVAR.
172 [New DEFCFUN tests based on the FUNCALL tests.
173 Luis Oliveira <loliveira@common-lisp.net>**20050711044713] 
174 [Make foreign-var-ptr a macro, make DEFCVAR type a normal arg
175 Luis Oliveira <loliveira@common-lisp.net>**20050711044934] 
176 [Implement FOREIGN-VAR-PTR and DEFCFUN-HELPER (thus DEFCFUN) for Lispworks.
177 Luis Oliveira <loliveira@common-lisp.net>**20050711045136] 
178 [Implement DEFCFUN-HELPER idea.
179 Luis Oliveira <loliveira@common-lisp.net>**20050711045325
181   - cffi-sys implementations can now define a defcfun-helper
182     function that returns two forms, a prelude and a caller.
183     (todo: explain this better in the code/doc)
184   - changed foreign-funcall-1 to translate-objects
185     (also todo: document translate-objects)
187 [Add in-package :cl-user to tests/package.lisp
188 Luis Oliveira <loliveira@common-lisp.net>**20050711045738] 
189 [Bug fix. Forgot to canonicalize the return type (and added test)
190 Luis Oliveira <loliveira@common-lisp.net>**20050711052929] 
191 [parse-c-type on load-time
192 Luis Oliveira <loliveira@common-lisp.net>**20050711061611] 
193 [Rename DEFCFUN-HELPER to DEFCFUN-HELPER-FORMS.
194 Luis Oliveira <loliveira@common-lisp.net>**20050713224259] 
195 [Convert docs to Texinfo format.
196 Luis Oliveira <loliveira@common-lisp.net>**20050730160328] 
197 [Bugfix: clisp converts NULL to NIL
198 Luis Oliveira <loliveira@common-lisp.net>**20050802021638
200  Added workaround in the pointer operations because of this.
201  Also added test: deref.pointer.null
203 [Use fboundp instead of find-symbol to define default defcfun helper.
204 Luis Oliveira <loliveira@common-lisp.net>**20050803002935] 
205 [:cffi/no-foreign-funcall and unexport foreign-var-ptr
206 Luis Oliveira <loliveira@common-lisp.net>**20050804043827
208  * Push :cffi/no-foreign-funcall to *features* when the host
209    lisp does not support it.
210  * Don't run the funcall tests when #+cffi/no-foreign-funcall
211  * Unexport foreign-var-ptr, it's meant to be used by defcvar
212    only.
214 [Minor simplification to test-op in cffi-tests.asd
215 Luis Oliveira <loliveira@common-lisp.net>**20050805183631] 
216 [New type translation interface.
217 Luis Oliveira <loliveira@common-lisp.net>**20050805184509
219  - Removed define-type-translator, added define-type-translation with
220    a new interface.
221  - Make with-object-translated, translate-objects and the string
222    type use the new interface.
224 [New callback interface.
225 Luis Oliveira <loliveira@common-lisp.net>**20050805185915
227  - New interface: DEFCALLBACK, CALLBACK, GET-CALLBACK
228  - New CALLBACK.* tests.
229  - Implementations of CFFI-SYS:MAKE-CALLBACK:
230      - Allegro, passes all tests on linux/x86 and win32
231        fails CALLBACKS.CHAR/UNSIGNED-CHAR/SHORT/UNSIGNED-SHORT
232        on darwin/ppc, looks like an Allegro bug.
233      - clisp, passes all tests.
234      - cmucl, passes all tests on linux/x86, on darwin/ppc fails
235        CALLBACKS.CHAR/UNSIGNED-CHAR/SHORT/UNSIGNED-SHORT, looks
236        like a bug in cmucl/ppc too.
237      - sbcl, x86 only, passes all tests except its callbacks
238        can't handle sap's yet, that'd be bug in sbcl too.
239      - openmcl, fails CALLBACKS.FLOAT/DOUBLE, I reported this
240        bug in openmcl, and it has been confirmed.
241      - Lispworks, passes all tests on darwin/ppc, on linux/x86
242        and win32 there are issues unrelated to callbacks.
244 [Allegro port update, bug fixes.
245 Luis Oliveira <loliveira@common-lisp.net>**20050805191454
247  - Convert chars to signed-byte instead of unsigned-byte (need
248    to figure out the issues between signed vs. unsigned char, btw)
249  - WITH-FOREIGN-PTR was evaluating SIZE twice.
251 [Lispworks bug fixes.
252 Luis Oliveira <loliveira@common-lisp.net>**20050805191902
254  - FLI:INCF-POINTER didn't increment the pointers at all.
255    Implemented CFFI-SYS:INC-PTR using FLI:MAKE-POINTER and
256    FLI:POINTER-ADDRESS instead.
257  - FLI:WITH-DYNAMIC-FOREIGN-OBJECTS was causing troubles on
258    all platforms, heap allocate for the time being.
259  - Missing (convert-foreign-type rettype) when defining a
260    foreign function. 
261  - FOREIGN-VAR-PTR was trying to access the var too soon,
262    simplified it a bit too.
264 [Make DEFCVAR use the type translation mechanism.
265 Luis Oliveira <loliveira@common-lisp.net>**20050805192631
267  - Also added new tests. Note, Lispworks on x86 starts behaving
268    erratically after runing the FOREIGN-GLOBALS.SET.STRING test
269    and eventually dies an horrible death. Also, Allegro doesn't
270    like its memory being free()d by C. doc/allegro-internals.txt
271    has some info on this. Should be easy to figure out.
273 [Small change to DEFCFUN-HELPER-FORMS.
274 Luis Oliveira <loliveira@common-lisp.net>**20050805193417
276  - Make it take an extra argument "lisp-name". Hopefully I got
277    this stuff right this time, I'm not sure yet.
279 [SBCL: use SB-SYS:FOREIGN-SYMBOL-SAP
280 Luis Oliveira <loliveira@common-lisp.net>**20050805193658
282  - SBCL 0.9.3 renamed SB-SYS:FOREIGN-SYMBOL-ADDRESS to
283    SB-SYS:FOREIGN-SYMBOL-SAP. Use this instead.
285 [Minor edits and changed SQRTF test.
286 Luis Oliveira <loliveira@common-lisp.net>**20050805193844
288  - Commented out some unused forms in src/functions.lisp.
289  - Defined our own SQRTF in libtest.c since it's not available
290    on win32.
292 [Initial support for Corman Lisp.
293 Luis Oliveira <loliveira@common-lisp.net>**20050806040043
295  - A few bugs and issues left, fails 5 tests. (the tests
296    won't run automatically because Corman Lisp binds
297    *load-truename* to NIL, so the code in tests/bindings.lisp
298    doesn't find the C test library).
300 [Broken "support" for GCL.
301 Luis Oliveira <loliveira@common-lisp.net>**20050806041119
303  - Basic pointer operations and memory access is working.
304  - Calling foreign functions too, probably, untested.
306 [Lispworks: use :byte for cffi's :char types
307 Luis Oliveira <loliveira@common-lisp.net>**20050810010007] 
308 [Clisp: use FOREIGN-ADDRESS-NULL in NULL-PTR-P
309 Luis Oliveira <loliveira@common-lisp.net>**20050811044353] 
310 [A couple of minor changes.
311 Luis Oliveira <loliveira@common-lisp.net>**20050821133513
313  - Move #-cffi/no-foreign-funcall from cffi-tests.asd to
314    tests/funcall.lisp and have the lisps that don't support this
315    push the feature in cffi-<lisp>.lisp instead of defpackage.
316  - New file: utils.lisp 
317  - Make Allegro, CMUCL, Corman and OpenMCL use callback-symbol-name  (from cffi-utils) to safely intern callback symbol names (James)
318  - Clisp: consider (pointerp NIL) => T
320 [Type system improvements and more.
321 Luis Oliveira <loliveira@common-lisp.net>**20050826144708
323  - New tests: tests/enums.lisp (4 tests) and tests/misc-types.lisp (3 tests).
324  - New file: objects.lisp, skeleton of the safe typed pointer interface. I
325    also added a :boolean type here, it's looking for a better home still.
326  - (early-types.lisp): type parsers, DEFINE-TYPE-SPEC-PARSER and PARSE-TYPE.
327    Added abbility to have anonymous types (ie. a name is no longer required
328    for FOREIGN-TYPE). Moved DEFCTYPE to types.lisp.
329  - (enum.lisp): improved DEFCENUM, the values for each keyword are now
330    optional, like in C. Added the anonymous type (:enum ...)
331  - (types.lisp):
332      - Renamed :TO-C-ARG to :TO-C-DYNAMIC.
333      - Renamed FOREIGN-AREF to MEM-AREF and implemented compiler macros
334        for it.
335      - New exported macro: DEFINE-FOREIGN-TYPE for parameterized types.
336      - Change DEFINE-TYPE-TRANSLATOR back to the previous interface,
337        translators take a type argument now and we have translators
338        available at runtime now too.
339      - FOREIGN-TYPEDEF's now inherit their parent type's translators.
340      - New :wrapper type, for anonymous typedefs with translators.
341  - (strings.lisp): Renamed string to :string. Added new type, :string+ptr.
342  - (utils.lisp): renamed let-if to bif.
343  - (tests/callbacks.lisp): two tests were not being run for SBCL
344    because I thought it triggered a bug but it's actually only one that
345    triggers the bug. Fixed that.
346  - Updated examples and tests to use :string instead of string.
348 [Oops
349 Luis Oliveira <loliveira@common-lisp.net>**20050827030127
351  - Forgot to add new file objects.lisp in last patch.
352  - Bogus type got sent by mistake in early-types.lisp
353  - Make DEFINE-FOREIGN-TYPE return the type name.
355 [More oops.
356 Luis Oliveira <loliveira@common-lisp.net>**20050827080900
358  - clisp: foreign-address-null is deprecated.
359  - types: fixed bug, regarding expanders + anonymous types.
360  - added documentation to the :boolean type
362 [Documentation, bug fixes and tweaks
363 Luis Oliveira <loliveira@common-lisp.net>**20050830025906
365  Bug fixes / tweaks:
366  - fixed typo in foreign-enum-value.
367  - defcenum: renamed argument, allow a docstring.
368  - defcvar and defcfun: also accept symbols as names.
369  - defcvar: added (declare (ignore value)) when read-only is true.
370  - foreign-funcall: fixed bug; premature canonicalization of the
371    return-type. added regression test for this.
372  - defcfun and defcallback: use the make-gensym-list utility
373  - defcallback: return the callback name;
374  - strings.lisp: fixed the docstrings for the :string translators;
375  - mem-aref: fixed bug/typo in its setf-expander; added regression
376    test for this.
377  - defcstruct and defcunion: allow a docstring.
378  - new tests: callbacks.qsort and funcall.string.3
381  Documentation:
382  - New file doc/Makefile for generating docs and uploading them to
383    c-l.net.
384  - Added every cffi function/macro that is currently exported.
385    documented half of them or so.
386  - colorize-lisp-examples.lisp: little script to colorize the examples
387    in the texinfo-generated html docs.
388  - gendocs.sh: generate the docs in various formats as well as an
389    index page from gendocs_template.
390  - further tweaks to doc/style.css.
392 [%foreign-funcall-ptr and small fixes
393 Luis Oliveira <loliveira@common-lisp.net>**20050831022358
395  - New CFFI-SYS operator: %foreign-funcall-ptr. Implemented for
396    Allegro, CLISP, CMUCL, SBCL and OpenMCL.
397  - foreign-funcall can now take either a string or a pointer as its
398    first argument. It'll decide at macroexpansion time whether to call
399    %foreign-funcall or %foreign-funcall-ptr.
400  - Updated foreign-funcall's documentation.
401  - Allegro tweaks: fix the lisp-type specification of (* :void)
402    pointers and :unsigned-char's. In the future, it might be better
403    to simply not specify anything were not necessary, though.
404  - Fixed silly bug in foreign-vars.lisp.
406 [Win32 tweaks to the test library...
407 Luis Oliveira <loliveira@common-lisp.net>**20050831063013
409  ... in order to work with the MSVC++ free toolkit.
411  - correctly load the test library.
412  - and __declspec(dllexport) to the test library functions
413  - implement a strdup, used in 2 tests
414  - added a compile.bat, the free toolkit doesn't seem to have
415    nmake. Also, I don't know how to make ASDF automatically
416    compile the lib under win32 like I did for *nix.
418 [Well, lets support MINGW too.
419 Luis Oliveira <loliveira@common-lisp.net>**20050831064645
420  Tweaked the Makefile a bit to support MINGW too.
422 [Slight change to defcenum to make Corman Lisp happier.
423 Luis Oliveira <loliveira@common-lisp.net>**20050901073604] 
424 [Fix struct bug, defcvar bug and tweaked bindings.lisp
425 Luis Oliveira <loliveira@common-lisp.net>**20050902044050
427  - defcvar now works (more) correctly with aggregate types.
428  - struct types now carry alignment information which is now
429    correctly calculated (for unions too) according to the x86
430    ABI (tested on darwin/ppc too, but should study other ABI
431    docs at some point).
432  - also tail padding is now correctly added to structs, when
433    necessary. (also according to the x86 ABI).
434  - 4 new tests for this struct bug (reported by Wilco Greven).
435  - tweaked tests/bindings.lisp to correctly load the library on
436    Lispworks and to make it more portable across win/nix/etc..
438 [CFFI User Manual update.
439 Luis Oliveira <loliveira@common-lisp.net>**20050902075750] 
440 [Handle empty structures gracefully
441 Luis Oliveira <loliveira@common-lisp.net>**20050907053119
443  - Fixed notice-foreign-structure-definition to handle empty
444    struct definitions correctly.
445  - Added new test for this: STRUCT.ALIGNMENT.5
447 [Fixed Allegro warning, removed #-sbcl from callback test
448 Luis Oliveira <loliveira@common-lisp.net>**20050908061253
450  - Don't use call-direct on functions with 0 arguments.
451  - Added a regression test for this and a test to see what
452    void functions return. (the latter will probably fail on
453    some ports)
454  - SBCL has fixed the callback bug in version 0.9.4.11,
455    removed the #-sbcl before the test that was triggering
456    the bug.
458 [foreign-alloc and uffi-compat
459 Luis Oliveira <loliveira@common-lisp.net>**20050909010022
461  - removed foreign-object-alloc, added cffi:foreign-alloc with new options
462    (including the functionality foreign-object-alloc provided).
463  - renamed the cffi-sys:foreign-alloc's to cffi-sys:%foreign-alloc.
464  - updated respective documentation.
465  - improved mem-aref's documentation including new examples.
466  - fixed with buf with lisp-string-to-foreign not handling empty strings
467    correctly. added regression test.
468  - fixed translate-to-c and translate-from-c (not exported yet)
469  - fixed uffi-compat bugs, implemented all operators (including a bunch
470    that aren't documented in UFFI's manual) except a foreign-string-length
471    which is weird and not used anywhere. 
472  - added "UFFI" as a nickname for the cffi-uffi-compat package.
474 [Fixed bug in cffi-lispworks
475 Luis Oliveira <loliveira@common-lisp.net>**20050912031053
477  - foreign-alloc now uses type :byte.
478  - make-callback specifies more options to define-foreign-callable.
480 [Stack allocation in cffi-lispworks and tweak to run-tests
481 Luis Oliveira <loliveira@common-lisp.net>**20050912065252
483  - Lispworks's with-foreign-ptr stack allocates again.
484  - run-tests now asks if we want to run the tests several times.
486 [Changes to callbacks.
487 Luis Oliveira <loliveira@common-lisp.net>**20050913054015
489  - Renamed make-callback to %defcallback and shifted the responsability
490    of storing the address in the callback-ptr property to the cffi-sys
491    backend. Previously in allegro and lispworks the host ffi's callback
492    definitions were non toplevel, which is probably not right.
493  - Use gensyms instead of callback-symbol-name (removed that function
494    from utils.lisp)
496 [Documentation and new test
497 Luis Oliveira <loliveira@common-lisp.net>**20050914002507
499  - Added detailed node listing to the User Manual.
500  - New regression test: WITH-FOREIGN-PTR.EVALX2 (checks if the size
501    argument is not evaluated twice by mistake)
502  - Also removed an old comment-out test function from cffi-lispworks.lisp
504 [make clean -> rm *.fsl too.
505 Luis Oliveira <loliveira@common-lisp.net>**20050914203204] 
506 [Missing DLLEXPORTs in libtest.c
507 Luis Oliveira <loliveira@common-lisp.net>**20050915001414] 
508 [Removed test, tweaked tests/Makefile
509 Luis Oliveira <loliveira@common-lisp.net>**20050915013027
511  - Commented out the test STRUCT.ALIGNMENT.5 because an empty struct is
512    not valid standard C and some compilers, namely VC++, won't compile it.
513  - Add -ansi -pedantic to the compiler flags to catch things like this
514    sooner next time.
516 [Corman Lisp update and note added to the manual.
517 Luis Oliveira <loliveira@common-lisp.net>**20050915043423
519  - Added note to the User Manual that it reflects what's in
520    cffi-luis, not the main branch.
521  - Updated cffi-corman.lisp and fixed a critical bug.
522    Now only 7 tests fail.
524 [Fix bug with arrays in uffi-compat.
525 Luis Oliveira <loliveira@common-lisp.net>**20050915142238] 
526 [Don't free lisp allocated memory on the C side.
527 Luis Oliveira <loliveira@common-lisp.net>**20050916004700] 
528 [foreign-symbol-ptr
529 Luis Oliveira <loliveira@common-lisp.net>**20050920173532
531  - new cffi-sys primitive: foreign-symbol-ptr (still needs semantics to
532    be defined when dealing with undefined foreign symbols)
533  - defcvar now uses this /at load-time/.
535 [Support for my asdf setup.
536 Luis Oliveira <loliveira@common-lisp.net>**20050924200146
538  Well, support for asdf setups that don't put fasl files next to
539  the source files. The Makefile will delete the .fasls directories
540  on make clean (that's where my setup puts the fasls) and bindings.lisp
541  will save the shared library's location at compile-time.
543 [foreign-symbol-ptr and defcvar, etc..
544 Luis Oliveira <loliveira@common-lisp.net>**20050924201305
546  - defcvar's expansion will now lookup the foreign symbol at runtime.
547    get-var-ptr too.
548  - Changed a few implementations to return NIL when foreign symbol
549    doesn't exist (instead of, say, raising an error): clisp, cmucl,
550    lispworks and sbcl.
551  - Exported foreign-symbol-ptr from the CFFI package and added it to
552    the user manual.
553  - Also added missing word to foreign-free's description.
554  - Fixed typo in cffi-corman-lisp.
556 [load-foreign-library
557 Luis Oliveira <loliveira@common-lisp.net>**20050925044242
559  - extend load-foreign-library to accept a pathname as an argument.
560  - change tests/bindings.lisp to pass a pathname.
562 [Fixed bogus getters in setf expanders.
563 Luis Oliveira <loliveira@common-lisp.net>**20050925193602
565  Bug report and initial bugfixes courtesy of Marco Gidde.
567  - fixed setf expanders for mem-ref, mem-aref, and foreign-slot-value.
568    (also mem-aref was evaluating the type argument twice)
569  - likewise fixed cmucl's, openmcl's and sbcl's setf expanders for %mem-ref.
570  - regression tests: mem-aref.eval-type-x2, mem-ref.nested, mem-aref.nested
571    and struct.nested-setf.  
573 [New test: void callback
574 Luis Oliveira <loliveira@common-lisp.net>**20050926234141] 
575 [pointer-eq and bug fixes
576 Luis Oliveira <loliveira@common-lisp.net>**20051002122416
578  - New CFFI-SYS primitive: POINTER-EQ. Implemented for all Lisps except
579    ECL and GCL. Exported it from the CFFI package.
580  - Added POINTER-EQ to the user manual.
581  - Bug fix: dereferencing an aggregate type should return a pointer to
582    it, not dereference it as a :pointer.
583  - Bug fix: mem-aref setf expander was returning a bogus getter (mem-ref
584    instead of mem-aref).
585  - Two regressions tests for the bugs above: DEREF.AGGREGATE and
586    DEREF.ARRAY-OF-AGGREGATES.
588 [Fixed bug in uffi-compat, added new type.
589 Luis Oliveira <loliveira@common-lisp.net>**20051003142016
591  - make the uffi-array-type be aggregate. (hopefully this didn't break
592    uses of this type in other situations)
593  - add uffi's :struct-pointer type. (not well tested, but passes all
594    tests from uffi's regression suite) 
596 [64-bit enhancements for OpenMCL
597 Luis Oliveira <loliveira@common-lisp.net>**20051006001347
599  - Use the :int instead of :signed-fullword, etc..
601 [cffi-openmcl 64-bit patches
602 Luis Oliveira <loliveira@common-lisp.net>**20051007003251
604  - Port to openmcl darwin/ppc64, courtesy Gary Byers.
606 [Makefile tweak for 64-bit platforms
607 Luis Oliveira <loliveira@common-lisp.net>**20051011123357
609  - x86-64 support courtesy Juho Snellman.
610  - G5 support courtesy Bryan O'Connor.
612 [Fix memory leak in test FOREIGN-GLOBALS.REF.STRING
613 Luis Oliveira <loliveira@common-lisp.net>**20051027142855] 
614 [Updated ECL support
615 Luis Oliveira <loliveira@common-lisp.net>**20051027143948
617  - Updated cffi-ecl.lisp, courtesy of Michael Goffioul.
618    (Includes some ECL specific workarounds in the portable
619     bits of CFFI.)
621 [New chapter: Implementation support and known issues.
622 Luis Oliveira <loliveira@common-lisp.net>**20051102153220] 
623 [Light reformating of the ECL changes to fit 80 columns.
624 Luis Oliveira <loliveira@common-lisp.net>**20051102153416] 
625 [Support for the (unsigned) long long type.
626 Luis Oliveira <loliveira@common-lisp.net>**20051102203613
628  - New CFFI primitive types :unsigned-long-long and :long-long.
629  - Implemented in the following backends: OpenMCL, SBCL and CMUCL.
630  - Implementations that don't support long long push :cffi/no-long-long
631    into *features*: Allegro, CLISP, Corman, ECL and Lispworks.
632  - New tests: FOREIGN-GLOBALS.REF.LONG-LONG, 
633    FOREIGN-GLOBALS.REF.UNSIGNED-LONG-LONG, FUNCALL.LONG-LONG,
634    CALLBACKS.LONG-LONG, CALLBACKS.UNSIGNED-LONG-LONG and DEFCFUN.LONG-LONG.
635  - libtest.c is now compiled with -std=c99 instead of -ansi.
636  - Add information about the new type in the manual and Mention known
637    issues in the various implementations.
639 [Export foreign-library-types from cffi-uffi-compat
640 Luis Oliveira <loliveira@common-lisp.net>**20051103133245] 
641 [uffi-compat fixes
642 Luis Oliveira <loliveira@common-lisp.net>**20051104101358
644  - Implement uffi:make-pointer and export uffi:pointer-address.
646 [pointer-address was exported twice from cffi-uffi-compatt
647 Luis Oliveira <loliveira@common-lisp.net>**20051104121605] 
648 [Add information about linux/ppc to the manual.
649 Luis Oliveira <loliveira@common-lisp.net>**20051104200531] 
650 [Add missing information about SBCL on linux/ppc
651 Luis Oliveira <loliveira@common-lisp.net>**20051104202843] 
652 [New test foreign-globals.set.long-long
653 Luis Oliveira <loliveira@common-lisp.net>**20051104230305] 
654 [Manual: OpenMCL fails FOREIGN-GLOBALS.SET.LONG-LONG
655 Luis Oliveira <loliveira@common-lisp.net>**20051104232143] 
656 [darwin/ppc32 ABI structure alignment
657 Luis Oliveira <loliveira@common-lisp.net>**20051114194120
659  - Normalize the different implementation features (:powerpc, :macos,
660    :macosx32) into :ppc32 and :darwin.
661  - Force Allegro, CLISP, Lispworks, SBCLto return 8 as :double's
662    alignment on darwin/ppc32
663  - Correctly calculate alignments for darwin/ppc32's strange ABI.
664  - New tests: STRUCT.ALIGNMENT.[567].
666 [add and export WITH-FOREIGN-STRINGS to uffi-compat
667 James Bielman <jamesjb@jamesjb.com>**20051115022728] 
668 [makefiles, defcstruct, foreign-string-alloc/with-foreign-string
669 Luis Oliveira <loliveira@common-lisp.net>**20051202075637
671  - Use variables for the lisps' paths so that one can easily pick
672    different versions to run the tests with. eg:
673      CMUCL=/path/to/lisp make test-cmucl
674  - FOREIGN-STRING-ALLOC and WITH-FOREIGN-STRING: check if what we're
675    passing as a string is actually a string. This avoids
676    (foreign-string-alloc nil) => <pointer to empty C string>
677  - DEFCSTRUCT now takes an optional :size option and each slot takes
678    an optional :offset parameter that overrides the normal offset. This
679    enables partial definitions of C structs. 
680  - The previous change forces to make the COUNT option for the slots
681    to be a keyword option. Update the examples accordingly.
682  - tests/Makefile: support for SunOS. 
684 [Documention changes
685 Luis Oliveira <loliveira@common-lisp.net>**20051203011223
687  - commented out some example structures that use unimplemented features.
688  - documented the recent DEFCSTRUCT changes; added related example.
689  - mention that lisps that don't support FOREIGN-FUNCALL support
690    DEFCFUN anyway.
691  - new example with FOREIGN-FUNCALL
692  - fix the comments in types.lisp about ABIs.
693  - (non doc related) make cffi-tests :use REGRESSION-TEST instead of RT.
695 [Missing changes in last patch...
696 Luis Oliveira <loliveira@common-lisp.net>**20051203034826] 
697 [Apply translations for simple slots.
698 Luis Oliveira <loliveira@common-lisp.net>**20051205014628
700  - Make the foreign-slot-value method on simple-struct-slot apply the
701    adequate type translator. Same thing for the setter.
702  - Test this in STRUCT.STRING.1 and STRUCT.STRING.2
704 [defcunion :count option for slots
705 Luis Oliveira <loliveira@common-lisp.net>**20051208063412
707  - Make the defcunion slots' count option be a keyword
708  like defcstruct. Fix the related docs and tests.
710 [Remove objects.lisp (new file: late-types.lisp)
711 Luis Oliveira <loliveira@common-lisp.net>**20051208065807] 
712 [Lots of renaming and 2 new functions
713 Luis Oliveira <loliveira@common-lisp.net>**20051209022821
715  - Renamed: null-ptr -> null-pointer, null-ptr-p -> null-pointer,
716    inc-ptr -> inc-pointer, with-foreign-ptr -> with-foreign-pointer,
717    with-foreign-ptr-as-string -> with-foreign-pointer-as-string,
718    foreign-slot-address -> foreign-slot-pointer, 
719    get-var-ptr -> get-var-pointer and
720    foreign-symbol-ptr -> foreign-symbol-pointer.
721  - Updated various references to the old names in the cffi code itself,
722    examples, tests and the manual.
723  - New functions: cffi(-sys):pointer-address and cffi(-sys):make-pointer.
724  - Use these in uffi-compat.
725  - Documented them in the manual.
726  - New tests: POINTER.1 and POINTER.2
728 [Update manual: CMUCL passes all tests.
729 Luis Oliveira <loliveira@common-lisp.net>**20051209053051] 
730 [Type translation refactoring
731 Luis Oliveira <loliveira@common-lisp.net>**20051211052201
733  - Refactoring of the type translation mechanism, now based on
734    generic functions. The only user-visible changes is that you can
735    now specialize the on the argument of the translator, and there's
736    no type argument now (which was useless too for user-defined types).
737  - Don't export define-type-spec-parser since it's useless on its own.
738  - The anonymous :enum type is gone.
739  - Updated manual.
741 [Oops
742 Luis Oliveira <loliveira@common-lisp.net>**20051211053118
744  - Missing comma in define-type-translator.
745  - Also, it almost but not quite accepted the method specifiers. Fixed.
747 [Added GETENV to uffi-compat
748 Luis Oliveira <loliveira@common-lisp.net>**20051211064557] 
749 [Fix uffi-compat wrt to the ptr->pointer changes
750 Luis Oliveira <loliveira@common-lisp.net>**20051211100102] 
751 [Bug fixes
752 Luis Oliveira <loliveira@common-lisp.net>**20051212053739
754  - WITH-FOREIGN-OBJECT should eval the type parameter. Fixed this
755    as well as the examples and tests that assumed it wasn't evaluated.
756  - document WITH-FOREIGN-OBJECT in the manual.
757  - removed the pseudo ability to specialize arguments on
758    define-type-translator. That didn't quite work, doh.
759  - removed dead code from cffi-uffi-compat::foreign-type-size
760    specialized on the uffi-array-type.
761  - uffi-compat: parse (:array <type>) as (:array <type> 1)
762  - uffi-compat: reflect the fact that CFFI:WITH-FOREIGN-OBJECT now
763    evaluates the type parameter.
765 [Fix parsing of types to match UFFI's behaviour
766 Luis Oliveira <loliveira@common-lisp.net>**20051214110839
768  Basically, extra quoting is supposed to be ignored.
769  Thus 'foo, ''foo, '''foo, are all valid types.
771 [Preliminary support for close-foreign-library
772 Luis Oliveira <loliveira@common-lisp.net>**20051215095834
774  Unimplemented for ECL and Corman. Lously implemented in CMUCL (and possibly
775  in the other ports too). Not exported.
777 [Untabify cffi-ecl.lisp
778 Luis Oliveira <loliveira@common-lisp.net>**20051215154526] 
779 [Forgot to export %close-foreign-library from cffi-lispworks.lisp
780 Luis Oliveira <loliveira@common-lisp.net>**20051220035858] 
781 [CFFI-SYS-SPEC manual updates & Texinfo idioms
782 Luis Oliveira <loliveira@common-lisp.net>**20051220043849
783    
784  Patch from: Stephen Compall <s11@member.fsf.org>
785    
786  - Use @var for arguments, rather than @code.
787  - Use @deftpx for a chain of type defns, rather than repeated @deftp
788    blocks.
789  - Use @result{} instead of explicit =>.
790  - Use @r with appropriate formatting for comments in
791    @examples/@lisps. [didn't apply these changes since they didn't
792    play well with the colorize script in the HTML output --luis]
793  - Introduction: Convert naming convention to a list of general
794    conventions, and define "foreign type".
795  - Rename the pointer functions.
796  - Document new functions.
797  - Use new @impnote macro to add notes, so they can be conditionally
798    removed from the manual.
800 [Use fli:make-pointer instead of fli:*null-pointer*
801 Luis Oliveira <loliveira@common-lisp.net>**20051221105427
803  Use FLI:MAKE-POINTER here instead of FLI:*NULL-POINTER* for
804  implementing CFFI-SYS:NULL-POINTER since old versions of
805  Lispworks don't seem to have the latter.
807  Patch courtesy of: Vebjorn Ljosa <vebjorn(@)ljosa.com>
809 [Make typedefs for structs work.
810 Luis Oliveira <loliveira@common-lisp.net>**20051221170235
812  - Make get-slot-info (and thus foreign-slot-value) work on typedefs
813    to a struct type.
814  - Regression test: STRUCT.4
816 [ffi:memory-as is a perfect match for %mem-ref
817 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051209172237] 
818 [use ffi:foreign-variable in foreign-symbol-pointer
819 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051214133725] 
820 [foreign-slot-value|set compiler-macro update
821 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051214133908] 
822 [cffi-clisp:%defcallback: simplify it
823 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051215085649] 
824 [Add background info on free'ing callbacks
825 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051220111627] 
826 [Fix indentation.
827 Luis Oliveira <loliveira@common-lisp.net>**20051222162055] 
828 [Make defcfun accept a docstring
829 Luis Oliveira <loliveira@common-lisp.net>**20051222170147] 
830 [Push :cffi to *features*
831 Luis Oliveira <loliveira@common-lisp.net>**20051222193904] 
832 [fix bugs in example implementation of mem-vector functions
833 James Bielman <jamesjb@jamesjb.com>**20051223014350] 
834 [fix foreign-struct-*-form thus enable foreign-slot-value optimization
835 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051222141506] 
836 [clisp: inline %mem-ref when given constant type
837 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051222141931] 
838 [fix foreign-struct-set-form & enable foreign-slot-set optimization
839 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051222151302] 
840 [Fix conflict and missing "value". Oops.
841 Luis Oliveira <loliveira@common-lisp.net>**20051223101748] 
842 [Revert brainfart. What missing value?
843 Luis Oliveira <loliveira@common-lisp.net>**20051223102106] 
844 [Free old callbacks on clisp.
845 Luis Oliveira <loliveira@common-lisp.net>**20051223091139] 
846 [uffi-compat optimization on deref-array
847 Luis Oliveira <loliveira@common-lisp.net>**20051223091203
849  Determine the element type at macro-expansion time when
850  the array type is constant.
852 [export %MEM-SET from cffi-sys and use instead of (SETF %MEM-REF)
853 James Bielman  <jamesjb@jamesjb.com>**20051223110805] 
854 [macrology to OAOO definition of %MEM-REF and %MEM-SET
855 James Bielman  <jamesjb@jamesjb.com>**20051223113523] 
856 [inform rt of expected test failures under openmcl
857 James Bielman  <jamesjb@jamesjb.com>**20051223113330] 
858 [with-foreign-object: optimize constant type case + use eval
859 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051223123549] 
860 [clisp: (setf %mem-ref) is gone, optimize %mem-set
861 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051223123712] 
862 [precision of wording (offset in bytes) & typo
863 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051223131305] 
864 [more tests: verify left to right evaluation rule
865 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051223131408] 
866 [clisp %mem-set use unexported ffi::stuff to enforce left-to-right evaluation
867 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20051223135321] 
868 [define type translators at compile time
869 James Bielman  <jamesjb@jamesjb.com>**20051223144701] 
870 [pull out and improve some cffi examples
871 James Bielman  <jamesjb@jamesjb.com>**20051223144749] 
872 [remove bogus extra right parenthesis
873 James Bielman  <jamesjb@jamesjb.com>**20051223153500] 
874 [Don't save (anonymous) parsed types in *foreign-types*
875 Luis Oliveira <loliveira@common-lisp.net>**20051226135322
877  Don't save parsed types in the *foreign-types* hashtable. This
878  way they can be garbage collected and the hashtable won't grow
879  indefinitely.
881  Issue reported by Novikov Leonid <ln (at) bk.ru>
883 [cffi-uffi-compat:allocate-foreign-object optimization
884 Luis Oliveira <loliveira@common-lisp.net>**20051226135806
886  Convert TYPE to the equivalent UFFI type at macro-expansion time
887  when constant.
889 [Fix compiler macros on foreign-slot-value/set
890 Luis Oliveira <loliveira@common-lisp.net>**20051227154753
892  - foreign-struct-slot-value-form and foreign-struct-slot-set-form
893    were not quoting the type in the resulting mem-ref form.
894  - struct.5, regression test.
896 [New TODO list and updated README.
897 Luis Oliveira <loliveira@common-lisp.net>**20051228150424
899  - New file: TODO. 46 items!
900  - Removed the outdated paragraph about implementation support from
901    the README file.
903 [Add some links to the TODO file.
904 Luis Oliveira <loliveira@common-lisp.net>**20051228151536] 
905 [FOREIGN-SLOT-NAMES and FOREIGN-SLOT-OFFSET
906 Luis Oliveira <loliveira@common-lisp.net>**20051228195843
908  - New functions: FOREIGN-SLOT-NAMES and FOREIGN-SLOT-OFFSET.
909  - Test FOREIGN-SLOT-NAMES: STRUCT.NAMES
910  - Removed respective TODO item and added a new one: document these.
912 [Document FOREIGN-SLOT-NAMES and FOREIGN-SLOT-OFFSET.
913 Luis Oliveira <loliveira@common-lisp.net>**20051228235427] 
914 [Fix the struct.names test and update some CLISP comments.
915 Luis Oliveira <loliveira@common-lisp.net>**20051230074303] 
916 [add scripts/ directory and release script
917 James Bielman  <jamesjb@jamesjb.com>**20051230081818] 
918 [Fix foreign-free example in the documentation.
919 Luis Oliveira <loliveira@common-lisp.net>**20051230121846] 
920 [Fix more typos in cffi-manual.
921 Luis Oliveira <loliveira@common-lisp.net>**20051230215218] 
922 [support Allegro CL and CLISP modern modes
923 James Bielman  <jamesjb@jamesjb.com>**20051230233959] 
924 [load-foreign-library changes
925 Luis Oliveira <loliveira@common-lisp.net>**20060103004525
927  - Pass :foreign t to LOAD on Allegro.
928  - Use sys::load-object-file on CMUCL.
930 [new type translator implementation
931 James Bielman  <jamesjb@jamesjb.com>**20051223194115] 
932 [specify :argument-precedence-order for translator generics
933 James Bielman  <jamesjb@jamesjb.com>**20051223195127] 
934 [fix unused variable warnings
935 James Bielman  <jamesjb@jamesjb.com>**20051223195348] 
936 [new translator interface updates
937 James Bielman  <jamesjb@jamesjb.com>**20051228172421
939  - Add UNPARSE generic function for unparsing types.
940  - Reverse the order of the type name and class in translator GFs.
941  - Add NEXT-* versions of the translator GFs.
944 [new file, translator example
945 James Bielman  <jamesjb@jamesjb.com>**20051228173014] 
946 [remove obsolete comment in MAKE-LOAD-FORM method
947 James Bielman  <jamesjb@jamesjb.com>**20051228174102] 
948 [fix missing newline issues
949 James Bielman  <jamesjb@jamesjb.com>**20060101043915] 
950 [new translator GF protocol, as discussed in IRC
951 James Bielman  <jamesjb@jamesjb.com>**20060101091535] 
952 [remove DEFINE-TYPE-TRANSLATOR from package exports
953 James Bielman  <jamesjb@jamesjb.com>**20060101091727] 
954 [properly handle alloc param chain for typedef translators
955 James Bielman  <jamesjb@jamesjb.com>**20060101093028] 
956 [ignore NAME in :wrapper UNPARSE method
957 James Bielman  <jamesjb@jamesjb.com>**20060101093154] 
958 [ramble a bit in comments about the new interface
959 James Bielman  <jamesjb@jamesjb.com>**20060101100935] 
960 [document new type translator interface in the manual
961 James Bielman  <jamesjb@jamesjb.com>**20060103092448] 
962 [clisp defcallback: free unless invalid (possibly from old image)
963 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060102152202] 
964 [with-foreign-pointer [cmucl,sbcl]: forgot one instance of EVAL (constantp case)
965 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060102152957] 
966 [TODO: foreign-alloc needs testcases
967 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060103153527] 
968 [ffi:with-c-var's symbol-macrolet repeatedly applies foreign-value, avoid it
969 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060103153551] 
970 [gensym name and typo fixes
971 James Bielman  <jamesjb@jamesjb.com>**20060103202816] 
972 [add todo list entry about implementing :uint8 and friends
973 James Bielman  <jamesjb@jamesjb.com>**20060105091444] 
974 [add todo list entry about setting union size
975 James Bielman  <jamesjb@jamesjb.com>**20060106074708] 
976 [add :size option to defcunion as with defcstruct
977 James Bielman  <jamesjb@jamesjb.com>**20060106082957] 
978 [New TODO item about CLISP fasl portability
979 Luis Oliveira <loliveira@common-lisp.net>**20060107015454] 
980 [Pushing cffi-features symbols to *features*
981 Luis Oliveira <loliveira@common-lisp.net>**20060107015644
983  - Renamed :cffi/no-foreign-funcall and :cffi/no-long-long to
984    cffi-features:foreign-funcall and cffi-features:long-long respectively
985    (with the opposite meanings of course).
986  - Also new features (in the cffi-features package): darwin, unix, windows,
987    ppc32 and x86. More could be added. The cffi-sys backends are
988    responsible for pushing these features.
990 [Foreign library changes
991 Luis Oliveira <loliveira@common-lisp.net>**20060107020805
993  - Fix loading of foreign libraries in cffi-allegro. Now tries to load
994    whatever is passed to %load-foreign-library instead of refusing to 
995    load files with types that aren't in excl::*load-foreign-types*.
996  - Changes to %close-foreign-library in CMUCL and SBCL. Use string=
997    instead of string-equal to match libraries.
998  - Lispworks: use :connection-style :immediate in %load-foreign-library.
999  - New foreign library interface.
1001 [Remove old comments in cffi-clisp and cffi-sbcl
1002 Luis Oliveira <loliveira@common-lisp.net>**20060107021001] 
1003 [%foreign-funcall-pointer for ECL
1004 Luis Oliveira <loliveira@common-lisp.net>**20060107021126] 
1005 [Remove the TODO item related to load-foreign-library
1006 Luis Oliveira <loliveira@common-lisp.net>**20060107021348] 
1007 [Substitute missing ensure-string.
1008 Luis Oliveira <loliveira@common-lisp.net>**20060107021835] 
1009 [New types. Sized ints and aliases.
1010 Luis Oliveira <loliveira@common-lisp.net>**20060107031709
1012  - Defined the :[u]int{8,16,32,64} types by looking at the sizes of
1013    the built-in types.
1014  - Removed :[u]int{8,16,32,64} from cffi-clisp.
1015  - New typedefs: :uchar, :ushort, :uint, :ulong, :llong, and :ullong.
1016  - New test: misc-types.sized-ints.
1017  - Removed the related TODO items.
1019 [fix callbacks in saved images in clisp, sbcl, allegro, and openmcl
1020 James Bielman  <jamesjb@jamesjb.com>**20060106030839] 
1021 [implement new callback interface for lispworks
1022 James Bielman  <jamesjb@jamesjb.com>**20060106034217] 
1023 [implement new callback interface for cmucl
1024 James Bielman  <jamesjb@jamesjb.com>**20060106045753
1026  Unsolved problems still prevent CFFI from working in a saved image
1027  on CMU CL.
1029 [implement new callback interface for ecl
1030 James Bielman  <jamesjb@jamesjb.com>**20060106050125
1032  Untested: the ECL backend does not seem to build for me.
1034 [implement new callback interface for corman
1035 James Bielman  <jamesjb@jamesjb.com>**20060106050325] 
1036 [signal an error when trying to load undefined "logical" foreign libraries
1037 James Bielman  <jamesjb@jamesjb.com>**20060107053455] 
1038 [remove some finished items from the TODO list
1039 James Bielman  <jamesjb@jamesjb.com>**20060107110558] 
1040 [allow t in library feature expression as default
1041 James Bielman  <jamesjb@jamesjb.com>**20060107061452] 
1042 [add :default expression to auto-append library suffixes
1043 James Bielman  <jamesjb@jamesjb.com>**20060107061526] 
1044 [update uffi-compat to new translator interface
1045 James Bielman  <jamesjb@jamesjb.com>**20060109074053
1047  Patch courtesy of: Robert J. Macomber <xbxyh8 at rojoma.com>
1049 [fix DISCARD-DOCSTRING to not treat a singleton string as a docstring
1050 James Bielman  <jamesjb@jamesjb.com>**20060110135750
1052  - Callback bodies consisting of only one string literal were treated
1053    as docstrings instead of being returned.
1054  - Added a test case in callbacks.lisp for this.
1055    
1056  Thanks to ignas on #lisp for the bug report.
1058 [fix load-foreign-library bug
1059 Luis Oliveira <loliveira@common-lisp.net>**20060111162918
1061  When loading a library defined with DEFINE-FOREIGN-LIBRARY, it was
1062  processing all the clauses that returned true instead of only the
1063  first.
1065  Thanks to Stephen Compall for the bug report.
1067 [Import the tutorial
1068 Stephen Compall <scompall@nocandysw.com>**20060111183840
1070  - "An Introduction to Foreign Interfaces and CFFI" added to manual.
1072 [Massage doc/colorize-lisp-examples.lisp a bit
1073 Luis Oliveira <loliveira@common-lisp.net>**20060111213859
1075  - Small hack to colorize-lisp-examples to make it treat "smalllisp"
1076    blocks like the normal "lisp" code blocks.
1078 [Documentation changes
1079 Luis Oliveira <loliveira@common-lisp.net>**20060112185201
1081  - Add some comments about define-foreign-library's new features. The
1082    t clause and :default.
1083  - Remove (setf get-callback) from the documentation.
1085 [untabify a few files
1086 James Bielman  <jamesjb@jamesjb.com>**20060114093347] 
1087 [Lispworks: fix override in %foreign-type-alignment
1088 Luis Oliveira <loliveira@common-lisp.net>**20060115010647
1090  Oversight when :ppc32 was renamed to cffi-features:ppc32.
1092 [Fix bug in libaries.lisp
1093 Luis Oliveira <loliveira@common-lisp.net>**20060115011033
1095  try-foreign-library-alternatives and load-foreign-library-name
1096  were shadowing %load-foreign-library's return value and returning
1097  nil even when a library was successfully loaded.
1099  Bug reported by Stephen Compall and Edi Weitz.
1101 [varargs support in defcfun
1102 Luis Oliveira <loliveira@common-lisp.net>**20060116175753
1104  For now this is in DEFCFUN itself. Not sure yet if this should be moved
1105  to a DEFCFUN-VARARGS or something similar.
1107 [tests: explicitly load msvcrt.dll on sbcl/win32
1108 Luis Oliveira <loliveira@common-lisp.net>**20060116175903] 
1109 [Fix bug in default-library-suffix
1110 Luis Oliveira <loliveira@common-lisp.net>**20060117005805] 
1111 [FOREIGN-FUNCALL(-POINTER) support for Lispworks
1112 Luis Oliveira <loliveira@common-lisp.net>**20060117013113
1114  Implementation %foreign-funcall and %foreign-funcall-pointer
1115  in cffi-lispworks by creating and caching one foreign funcallable
1116  per function signature at macroexpansion-time.
1117    
1118  Patch courtesy of Edi Weitz <edi at agharta dot de>
1120 [New test: FUNCALL.INT.2
1121 Luis Oliveira <loliveira@common-lisp.net>**20060117225544] 
1122 [point libc manual refs to gnu.org
1123 Stephen Compall <scompall@nocandysw.com>**20060118192501
1125  - In doc/gendocs.sh, HTML files are now modified with sed to point to
1126    the glibc manual hosted on gnu.org whenever a link to that manual
1127    appears.
1129 [Fix bug in Lispworks's %%foreign-funcall
1130 Luis Oliveira <loliveira@common-lisp.net>**20060121025557] 
1131 [Signal an error when defcstruct/defcunion is passed a :void
1132 Luis Oliveira <loliveira@common-lisp.net>**20060121030713] 
1133 ["added one declare ignore"
1134 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060116143820] 
1135 [register-callback clisp: use only ffi:exported functions
1136 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060121032249] 
1137 [%foreign-funcall-pointer/clisp: constant fold with load-time-value
1138 Joerg-Cyril Hoehle <hoehle@users.sourceforge.net>**20060121032336] 
1139 [Fix override in clisp's %foreign-type-alignment
1140 Luis Oliveira <loliveira@common-lisp.net>**20060121032350] 
1141 [Do argument promotion on variadic functions
1142 Luis Oliveira <loliveira@common-lisp.net>**20060121033736
1144  - New macro foreign-funcall-varargs that does argument promotion.
1145  - Make defcfun use this when &rest is used.
1146  - New tests: DEFCFUN.VARARGS.{CHAR,SHORT,INT,LONG,FLOAT,DOUBLE,STRING}.
1148 [Fix foreign-funcall sprintf tests' return types.
1149 Luis Oliveira <loliveira@common-lisp.net>**20060121033819] 
1150 [New TODO items.
1151 Luis Oliveira <loliveira@common-lisp.net>**20060121034720
1153  - Underspecifed Semantics: doubles/floats
1154  - Known Issues: cffi-tests.asd's bogus :c-test-lib
1156 [update manual Introduction and Foreign types, texinfo idioms throughout
1157 Stephen Compall <scompall@nocandysw.com>**20060119185920
1159  - Remove note on cffi-luis branch.
1160  - Write introductory chapter.
1161  - Acronym/sc-ify CL implementation names.
1162  - Use @cffi{} instead of CFFI.
1163  - Use @impnote for notes from luis and james.
1164  - Split existing type translator explanation to make "Defining
1165    typedefs" and rewrite the former.
1166  - Invent an example for defcstruct, and explain its limitations.
1167  - Write "Allocating Foreign Objects".
1168  - Move with-foreign-object(s) to Pointers chapter, to group it with
1169    foreign-alloc.
1170  - Use @sc and @result to make REPL examples pretty, and move them into
1171    @example sections.
1172  - Remove commented-out sections; they can be readded later from darcs
1173    repo if need be.
1175 [document new library interface, some other manual stuff
1176 Stephen Compall <scompall@nocandysw.com>**20060123040605
1178  - New macro @Variable.
1179  - Fix 2 @end examples.
1180  - In "Arguments and Values" headings, use @var for tables of
1181    variables, as they act as metasyntactic variables in this situation.
1182  - Document new library interface.
1183  - Use @unnumberedsec in dictionary nodes instead of @heading, and
1184    @code the names.
1185  - Platform-specific features: new appendix.
1186  - define-curl-option-setter: curl-code is not a keyword
1187  - Use new @seealso macro for "See Also" xrefs.
1188  - Merge all indexes into cp.
1190 [documentation changes
1191 Luis Oliveira <loliveira@common-lisp.net>**20060123165541
1193  - removed known issue about modern mode as it should work now.
1194  - removed note about callbacks being linux/x86 only.
1195  - fixed typo: supported -> unsupported.
1196  - remove note about [u]int{8,16,32,64} not being implemented.
1197  - add documentation about uint, uchar, ulong, ullong.
1198  - fix foreign-alloc's function signature.
1199  - update info regarding lispworks's new foreign-funcall.
1200  - add example for *darwin-framework-directories*.
1201  - fixed define-foreign-library's syntax.
1202  - comment out sentence about use-foreign-library setting the current
1203    foreign library as it doesn't do that yet.
1204  - remove the (setf (callback ...)) example. this isn't allowed anymore.
1205  - rename foreign-funcall and long-long to no-foreign-funcall and
1206    no-long-long. 
1207  - long-long is a standard C99 type, remove mention of GNU there.
1209  - removed TODO item: there's already a tutorial.
1210  - added TODO item: document defcfun's new capabilities
1213 [stabilize the last few doc changes
1214 Stephen Compall <scompall@nocandysw.com>**20060124165502
1216  - display Luis's name with an accent
1217  - @sc the warranty
1218  - remove @code from section headings and @seealso
1219  - reword no-long-long note again
1220  - hey, define-foreign-library supports multiple libraries
1221  - clarify what *darwin-framework-directories* is actually used for
1222  - reorganize *foreign-library-directories* description
1223  - in gendocs.sh, fix libtool links as well
1225 [more doc changes; renamed features
1226 Luis Oliveira <loliveira@common-lisp.net>**20060125004215
1228  - change "docs" to be the default target in doc/Makefile.
1229  - add Stephen the list of authors in cffi-manual
1230  - rename "Index" to "Comprehensive Index" so that Index.html doesn't
1231    clash with index.html on OSX.
1232  - add varargs example for defcfun
1233  - rename features (again) foreign-funcall -> no-foreign-funcall,
1234    long-long -> no-long-long.
1236 [Use l-t-v in lispworks's %foreign-funcall
1237 Luis Oliveira <loliveira@common-lisp.net>**20060126041652] 
1238 [Comment about why cffi-features:no-*
1239 Luis Oliveira <loliveira@common-lisp.net>**20060126041743] 
1240 [Add option to defcenum
1241 Luis Oliveira <loliveira@common-lisp.net>**20060130174114
1243  New option to defcenum in order to be able a base type different
1244  from the default, :int.
1246 [Add check for FreeBSD and remove some redundant assignments.
1247 keriax@gmail.com**20060201124058] 
1248 [Make defcenum accept duplicate values.
1249 Luis Oliveira <loliveira@common-lisp.net>**20060201191712
1251  DEFCENUM will discard the previous value->keyword mapping (though not
1252  the respective keyword->value mapping of course) when it find a
1253  duplicate value.
1255 [Fix allegro's %load-foreign-library
1256 Luis Oliveira <loliveira@common-lisp.net>**20060202035729
1258  Versions prior to 7.0 don't have a :foreign keyword argument
1259  for LOAD. Reported by Andrew Philpot.
1261 [Implement defbitfield
1262 Luis Oliveira <loliveira@common-lisp.net>**20060202124753
1264  - New macros and functions: DEFBITFIELD, FOREIGN-BITFIELD-VALUE,
1265    FOREIGN-BITFIELD-SYMBOLS.
1267 [Evaluate define-foreign-librare earlier for CMUCL
1268 Luis Oliveira <loliveira@common-lisp.net>**20060202124908
1270  Since we're wrapping use-foreign-library with an eval-when to load
1271  foreign library at compile-time, we need to do the samething with
1272  define-foreign-library otherwise use-foreign-library will try to
1273  load an undefined library.
1275 [Add an optimization for defining non-translatable types.
1276 James Bielman  <jamesjb@jamesjb.com>**20060203004128
1278  - New generic function on types: TRANSLATE-P.  This is true for all types
1279    except built-in foreign types and typedefs defined non-translatable.
1280  - Incompatible change: DEFCTYPE now accepts keyword arguments :TRANSLATE-P
1281    and :DOCUMENTATION instead of an optional docstring.
1282  - Define the standard integers types as non-translatable.
1284 [Add ERRORP keyword argument to FOREIGN-ENUM-VALUE / FOREIGN-ENUM-KEYWORD.
1285 James Bielman  <jamesjb@jamesjb.com>**20060203011213
1287  - If ERRORP is false, converting nonexistent enum values and keywords
1288    will return NIL instead of signalling an error.
1290 [Remove documentation string from test type.
1291 James Bielman  <jamesjb@jamesjb.com>**20060203013009] 
1292 [Add TODO entry to compile a 32-bit libtest on 64-bit Linux.
1293 James Bielman  <jamesjb@jamesjb.com>**20060203071013] 
1294 [Parse and lift declarations properly for DEFCALLBACK.
1295 James Bielman  <jamesjb@jamesjb.com>**20060203065249
1297  - Add a new utility function PARSE-BODY to CFFI-UTILS to pull the
1298    documentation string and declarations out of a body of code.
1299  - Use CFFI-UTILS:PARSE-BODY in DEFCALLBACK.
1301 [Fix INVERSE-TRANSLATE-OBJECTS to respect TRANSLATE-P.
1302 James Bielman  <jamesjb@jamesjb.com>**20060203072438] 
1303 [Add tests for non-translatable typedefs.
1304 James Bielman  <jamesjb@jamesjb.com>**20060203072547
1306  - Test as arguments and return value to a foreign function.
1307  - Test as arguments and return value from a callback.
1309 [Update documentation for DEFCTYPE.
1310 James Bielman  <jamesjb@jamesjb.com>**20060203073557] 
1311 [Minor documentation updates.
1312 James Bielman  <jamesjb@jamesjb.com>**20060203080354
1314  - Comment out sections that refer to unimplemented functionality.
1315  - Remove obsolete references to DEFINE-TYPE-TRANSLATOR.
1316  - Document the ERRORP argument to FOREIGN-ENUM-TYPE / FOREIGN-ENUM-KEYWORD.
1317  - Remove the documentation of the unimplemented slot name chaining feature
1318    in FOREIGN-SLOT-VALUE.
1320 [Remove outdated comment about foreign-slot-value
1321 Luis Oliveira <loliveira@common-lisp.net>**20060203080734] 
1322 [New test: callbacks.funcall
1323 Luis Oliveira <loliveira@common-lisp.net>**20060203080758
1325  Tests both declarations in a callback's body and foreign-funcalling
1326  a cffi callback.
1328 [Add CFFI-FEATURES:X86-64 and push it on *FEATURES* on AMD64 Lisps.
1329 James Bielman  <jamesjb@jamesjb.com>**20060203082954
1331  - Currently this is supported under SBCL and CLISP.  It would be nice to
1332    implement this for Allegro on AMD64 as well, but I don't have a copy.
1334 [Add two new tests for MAKE-POINTER and INC-POINTER.
1335 James Bielman  <jamesjb@jamesjb.com>**20060203161210] 
1336 [Add tests for keyword arguments to FOREIGN-ALLOC.
1337 James Bielman  <jamesjb@jamesjb.com>**20060203195705] 
1338 [Disable test DEFCFUN.VARARGS.FLOAT for now.
1339 James Bielman  <jamesjb@jamesjb.com>**20060204022835] 
1340 [Don't add CFFI-FEATURES:UNIX to *FEATURES* on SBCL/Win32
1341 James Bielman  <jamesjb@jamesjb.com>**20060204050240] 
1342 [Build an additional 32-bit libtest.so on x86-64 Linux.
1343 James Bielman  <jamesjb@jamesjb.com>**20060203163602] 
1344 [Use DEFINE-FOREIGN-LIBRARY to load the test shared library.
1345 James Bielman  <jamesjb@jamesjb.com>**20060203163636] 
1346 [Update system definition version to 0.9.0.
1347 James Bielman  <jamesjb@jamesjb.com>**20060204082814]