Introduction
Introduction Statistics Contact Development Disclaimer Help
tTODO - clic - Clic is an command line interactive client for gopher written in…
git clone git://bitreich.org/clic/ git://hg6vgqziawt5s4dj.onion/clic/
Log
Files
Refs
Tags
LICENSE
---
tTODO (4692B)
---
1 -*- Text -*-
2
3 This is a collection of TODO items and ideas in no particular order.
4
5 ### Testing
6
7 -> Test uffi-compat with more UFFI libraries.
8 -> Write more FOREIGN-GLOBALS.SET.* tests.
9 -> Finish tests/random-tester.lisp
10 -> Write benchmarks comparing CFFI vs. native FFIs and also demonstrating
11 performance of each platform.
12 -> Write more STRUCT.ALIGNMENT.* tests (namely involving the :LONG-LONG
13 and :UNSIGNED-LONG-LONG types) and test them in more ABIs.
14 -> Run tests with the different kinds of shared libraries available on
15 MacOS X.
16
17 ### Ports
18
19 -> Finish GCL port, port to MCL.
20 -> Update Corman port. [2007-02-22 LO]
21
22 ### Features
23
24 -> Implement a declarative interface for FOREIGN-FUNCALL-PTR, similar to
25 DEFCUN/FOREIGN-FUNCALL.
26 -> Implement the proposed interfaces (see doc/).
27 -> Extend FOREIGN-SLOT-VALUE and make it accept multiple "indices" for
28 directly accessing structs inside structs, arrays inside structs, etc…
29 -> Implement EXPLAIN-FOREIGN-SLOT-VALUE.
30 -> Implement :in/:out/:in-out for DEFCFUN (and FOREIGN-FUNCALL?).
31 -> Add support for multiple memory allocation schemes (like CLISP), name…
32 support for allocating with malloc() (so that it can be freed on the C
33 side)>
34 -> Extend DEFCVAR's symbol macro in order to handle memory (de)allocation
35 automatically (see CLISP).
36 -> Implement byte swapping routines (see /usr/include/linux/byteorder)
37 -> Warn about :void in places where it doesn't make sense.
38
39 ### Underspecified Semantics
40
41 -> (setf (mem-ref ptr <aggregate-type> offset) <value>)
42 -> Review the interface for coherence across Lisps with regard to
43 behaviour in "exceptional" situations. Eg: threads, dumping cores,
44 accessing foreign symbols that don't exist, etc...
45 -> On Lispworks a Lisp float is a double and therefore won't necessarily
46 fit in a C float. Figure out a way to handle this.
47 -> Allegro: callbacks' return values.
48 -> Lack of uniformity with regard to pointers. Allegro: 0 -> NULL.
49 CLISP/Lispworks: NIL -> NULL.
50 -> Some lisps will accept a lisp float being passed to :double
51 and a lisp double to :float. We should either coerce on lisps that
52 don't accept this or check-type on lisps that do. Probably the former
53 is better since on lispworks/x86 double == float.
54
55 ### Possible Optimizations
56
57 -> More compiler macros on some of the CFFI-SYS implementations.
58 -> Optimize UFFI-COMPAT when the vector stuff is implemented.
59 -> Being able to declare that some C int will always fit in a Lisp
60 fixnum. Allegro has a :fixnum ftype and CMUCL/SBCL can use
61 (unsigned-byte 29) others could perhaps behave like :int?
62 -> An option for defcfun to expand into a compiler macro which would
63 allow the macroexpansion-time translators to look at the forms
64 passed to the functions.
65
66 ### Known Issues
67
68 -> CLISP FASL portability is broken. Fix this by placing LOAD-TIME-VALUE
69 forms in the right places and moving other calculations to load-time.
70 (eg: calculating struct size/alignment.) Ideally we'd only move them
71 to load-time when we actually care about fasl portability.
72 (defmacro maybe-load-time-value (form)
73 (if <we care about fasl portability>
74 `(load-time-value ,form)
75 form))
76 -> cffi-tests.asd's :c-test-lib component is causing the whole testsuite
77 to be recompiled everytime. Figure that out.
78 -> The (if (constantp foo) (do-something-with (eval foo)) ...) pattern
79 used in many places throughout the code is apparently not 100% safe.
80 -> On ECL platforms without DFFI we need to build a non-linked version
81 of libtest.
82 -> foreign-enum-keyword/value should have their own error condition?
83 <http://article.gmane.org/gmane.lisp.cffi.devel/975> [2007-02-22 LO]
84
85 ### Documentation
86
87 -> Fill the missing sections in the CFFI User Manual.
88 -> Update the CFFI-SYS Specification.
89 -> have two versions of the manual on the website
90
91 ### CFFI-Grovel
92
93 -> Look into making the C output more concise.
94
95 ### CFFI-Toolchain
96
97 -> Port the toolchain parameter detection to more implementations
98 -> Port the static linking support to more implementations
99 -> Add a mechanism to configure and/or detect dynamic libraries against
100 which to link for instance.
101 It could be a variable in which flags are accumulated,
102 or an autodetection after loading everything, see
103 https://github.com/borodust/cl-bodge/blob/0.3.0/distribution/build.l…
104
105 ### CFFI/C2FFI
106
107 -> Generate wrappers for C inline function definitions (and maybe for so…
108 #define's?)
109 -> It would be nice if c2ffi emitted its output in a stable order
110 for details see https://github.com/rpav/c2ffi/issues/28
111 -> Handle va_list. For now it's treated as any other argument.
112
113 ### Other
114
115 -> Type-checking pointer interface.
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.