concept/mproof: Fixed an old minor bug in the concept.
[neuro.git] / TODO
blob72f1d8c70a1009a6884861b8e2e538de8bd48492
1 Things to do in the neuro library.
3 neuronet -- It is possible to connect more than once with a single master.
4          - Currently, there is no check upon several NNet_Connect to
5            see if the master already has a running connection. It is very
6            important to make sure not to allow this!
8 neuronet -- New feature possibility of changing the PROTOCOL.
9          - TCP and UDP should be readily available.
10          - Multicast support would also be a very important feature
11            especially for devwatcher.
13 man -- the function Neuro_EBufIsEmpty:
14          - the documentation of the return 2 isn't
15            present in the man page. It is the value
16            returned when the input EBUF is NULL.
18 docs -- change of script:
19          - Implement (and finish) the new haskell neuroman
20            tool which supports html output (and eventually man pages).
22 docs -- removal of docs, to be moved independently of libneuro:
23          - I guess it would be better to simply move docs
24            out of the core sources and permit embedding of the
25            docs rather than directly having them in the tree would
26            be better at every levels.
28 docs -- add a configure entry for Tcl:
29          - the configure script needs to
30            check if Tcl is available to build the
31            manual pages. If it isn't, no errors should
32            be raised, only disable documentation building.
34 *** events (done) -- Implement an event based set of functions:
35          - Currently, the state of the mouse and 
36            keyboard are looped... the drivers will
37            need to be changed accordingly.
39 graphics/other (done) -- Implement Neuro_PutPixel and GetPixel:
40          - The location where those functions needs
41            to be put is probably best in the extlib
42            module.
44 debug -- bugged Neuro_DebugChannel:
45          - It doesn't always work, it needs to
46            be tested fully because it definitely
47            contains bugs. (warn+all error+all to
48            the filter and EBUF doesn't output any
49            warnings when it is supposed to do so).
51 misc/arg -- the source file doesn't have a code template
52          - The code template templates/template_source 
53            needs to be implemented for this module.
55 misc -- the whole misc/ directory's source files require
56         a major cleanup.
58 misc -- move Color conversion functions:
59          - The color conversion functions should be moved
60            to their own source file (Neuro_RGB**).
62 extlib (X11) (passed) -- Lib_SetColorKey has a memory leak:
63          - A very nasty one on that, needs to be fixed.
65         * After checking with valgrind I actually found
66           out that the memory leak lies in the X11
67           client interface... I recently upgraded my 
68           Xorg from 6.8.2 to 6.9.0 and that's what I'm
69           getting now... A huge amount of memory leaks.
71 extlib (SDL) -- Needs a buffer to hold the v_objects:
72          - I just noticed that the SDL doesn't have a
73            v_object cleaner like the X11 driver, we
74            need to implement one as soon as possible
75            to avoid a maximum amount of memory leaks.
76            This should be pretty easy, just need to
77            use the same method as in the X11 driver.
79 extlib (SDL) on w32 -- bug with the bitmap loader:
80          - When the algorithm tries to load compressed
81            bitmaps(not all though), theres a bug that 
82            makes it do a death loop and/or a 
83            segmentation fault... When theres a death 
84            loop, it eventually ends up in a 
85            segmentation fault. I suspect that
86            the SDL.dll API differs from the linux object
87            and either the PutPixel function or a lack of
88            step for bitmaps is the cause of it.
90            * After checking the bitmap code, it seems
91            the bug is related the the bits per pixel
92            when creating a v_object.
94 extlib (SDL) -- There seems to be a memory leak:
95          - When running the "simple" example
96            project with valgrind, I get memory
97            leaks with SDL. This could be SDL
98            though because I couldn't trace the
99            leaks. About 27KB leaked.
101 extlib -- the fonts have a memory leak:
102          - The code to load the fonts need
103            to be checked for memory leaks
104            because valgrind currently says
105            theres about 27k of constant mem
106            leak, no matter how much fonts you
107            create. It could be a leak in freetype
108            itself. 
109         *** NOTE Just checked and the values
110            are different and they are the exact
111            same on another project not at all
112            using the fonts...
114 debug -- The whole debug.c file needs to change:
115          - The module needs to be put into src/misc
116            in the first place and every Debug_ functions
117            need to be interfaced to Neuro_ functions.
119 debug -- The implementation needs a namespace method:
120          - In order to avoid module name conflicts,
121            we will need to implement some kind of namespace
122            that projects will set in a similar matter as
123            NEURO_MODULE_CHANNEL but rather globally to the
124            whole project this time instead of just per module.
125         *** DONE but needs more work in order to make it easily added
126             into projects as this requires a macro to be set in a global header
127             in order to work... which would be a little hard to figure for people
128             that start to use the library.
130 bitmap -- Add checks to approve bitmap files:
131          - In order to make the bitmap loader more robust,
132            it is imperative to implement a set of checks to
133            see if the input file to be loaded by the bitmap
134            loader are really bitmaps. a minimal version was
135            done to check the magic word. We also need to put
136            a check to see if the data size are correct according
137            to a value in the header(something like data size).
139 ***general -- a split of code is required (high priority):
140          - After developping libneuronet heavily, it was clear
141            that libneuro became an heavy dependency. End coders
142            that use neuronet don't really want to use libneuro's
143            gfx api code and thus it becomes vastly unecessary code.
144          - A first non drastic approach was to implement a
145            configure option which disabled all of the video, font and
146            such functionalities of libneuro which was then unofficially
147            called light libneuro.
148          - Now, I want to fully split the libneuro code, the current
149            libneuro project will contain only a set of toolbox modules
150            like debug, ebuf, (the new lbuf) and string splitters.
151            The split task is probably easier than it seems but a certain
152            dilemma is required regarding the code history of the changes.
153            The safest approach would be to _copy_ the history for both
154            the splitted projects.
155          - The video project, code named libneurovideo for now will contain
156            all the rest not mentionned in the earlier step, things like extlib,
157            color functions, painter's algorithm, bitmap loader and such will be
158            the main functionnalities of the project. The project will have a safe
159            spot in essence exactly the same as the libneuronet spot
160            for quick inclusion into the libneuro compilation process.
162 general -- document the API (high priority):
163          - All the external functions of the API should be 
164            documented in a format that neuroman.tcl should
165            be able to parse.
166          - EBuf  [done needs to be revised]
167          - Video [not done]
168          - Events [not done]
169          - misc (including the extlib interface) [not done]
171 * extlib sdl -- default depth currently static 16 :
172         - make this so it is settable and not just a static 16.
174 graphics engine : coredraw -- review and heavily test Graphics_RedrawSection :
175         - I noticed this function is really the weak point of the painter's algorithm
176           and thus needs heavy testing and consolidation.
178 **goals for 0.50 :
179         - Finish a full documentation of the library.
180         - Make the project GPL v3 compatible and perhaps
181           completely make it GPL v3.
183 **goals for 0.60 :
184         - Fix the bugs in the bitmap loading algorithm.
185         - Code the new debugging method.
186         - fix up the keyboard events in the SDL driver.
187         - Clean up the source file in the misc directory.
188           All the functions inside other.c need to be placed
189           in meaningful source files.
190         - Go through all the modules and implement the new
191           debugging method to them.
193 ***goals for 1.0 :
194         - make the extlib drivers their own shared 
195           objects that neuro could dynamically load
196           during runtime. A configuration file would
197           be used to set which one of the drivers to
198           load.
199         - code openGL drivers for neuro, those drivers
200           would probably have more extensible set of
201           functions which could be used by the applications.
202           So I guess it would be a different branch than
203           the 2d extlib ones.
205 extlib X11 -- implement gfx shared memory :
206         - in order to get far faster performances with
207           pretty much any graphical operations, the
208           addition of MIT shared memory for every images
209           will be used.
211 implement subprojects :
212         libneuronet : done
213         libneurogui : to do
214         libgeometry : to do
215         sprite module : to do
216         image loader : to do
217