X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1b6c197b14e824a4d32214728d5988e288668b40..d13e000f56cfa4abba1c733cdc695a422b8ea39e:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 355398d361..24947c0532 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,223 @@ +2004-11-03 Arnaud Legrand + - Rename every gras_* function that was in xbt/ to its xbt_ + counterpart. + - Add a heap and a doubly-linked list to xbt + - Added a dichotomy to the dictionnaries. make check works as well before + so I assume that the patch is correct. I do not know however if things + run effectively faster than before now. :) + +2004-10-29 Martin Quinson + - Introduction of the remote errors. + They are the result of a RMI/RPC on the remote machine. + ErrCodes being scalar values, you can't get the host on which those + errors did happen. Extending the error mecanism as in Gnome is possible. + No idea yet whether it is a good idea. + +2004-10-28 Martin Quinson + - Interface revolution: the Starred Structure Eradication. + I used to do typedef struct {} toto_t; and then handle *toto_t. + Arnaud (and Oli) didn't like it, and I surrendered. Now, you have: + - ???_t is a valid type (builded with typedef) + - s_toto_t is a structure (access to fields with .) + - s_toto is a structure needing 'struct' keyword to be used + - e_toto_t is an enum + - toto_t is an 'object' (struct*) + Exemple: + typedef struct s_toto {} s_toto_t, *toto_t; + typedef enum {} e_toto_t; + Moreover, only toto_t (and e_toto_t) are public. The rest (mainly + s_toto_t) is private. + + - While I was at it, all gras__free() functions want a gras__t* + so that it can set the variable to NULL. It was so for dicts and sets, + it changed for dynars. + + - Fix a bunch of memleaks in dict_remove + - Fix a bug in sg/server_socket opening: it failed all the time. + +2004-10-07 Martin Quinson + - Speed up dynar lookup operation a bit. + + gras_dynar_get is dead. + + Now, you can choose between gras_dynar_get_cpy (the old gras_dynar_get + but should be avoided for efficiency reasons) and gras_dynar_get_ptr + (which gives you the address of the stored data). + + gras_dynar_get_as is an helpful macro which allows you to retrieve a + copy of the data using an affectation to do the job and not a memcpy. + + int toto = gras_dynar_get_as(dyn,0,int); rewrites itself to + int toto = *(int*)gras_dynar_get_ptr(dyn,0); + + It does not really speedup the dynar test because they are + setting elements all the time (and look them seldom). But the dict does + far more lookup than setting. + + So, this brings the dict_crash test from ~33s to ~25s (200000 elms). + +2004-10-05 Martin Quinson + - Allow to (en/dis)able the cycle detection at run time. + + Whether we should check for cycle or not is now a property of each + datatype. When you think there may be some cycle, use datadesc_cycle_set. + datadesc_cycle_unset allow to remove this property when previously set. + + Note that the cycle detection is off by default since it impacts the + performance. Watch the data you feed GRAS with ;) + + This property is hereditary. Any element embeeded in a structure having it + set have it set for the time of this data exchange. + + You should set it both on sender and receiver side. If you don't set it on + sender side, it will enter an endless loop. If you forget on receiver + side, the cycles won't be recreated after communication. + + - Header reorganization. + Kill gras_private.h, each submodule must load the headers it needs. + +2004-10-04 Martin Quinson + - Interface revolution: do not try to survive to malloc failure. + + Now, gras_malloc and friends call gras_abort() on failure. + As a conclusion, malloc_error is not a valid error anymore, and all + functions for which it was the only gras_error_t return value are + changed. They now return void, or there result directly. + This simplify the API a lot. + +2004-09-29 Martin Quinson + - Re-enable raw sockets. + Created by gras_socket_{client,server}_ext; + Used with gras_raw_{send,recv} + No select possible. + + It should allow to kill the last bits of gras first version soon. + + This is not completely satisfactory yet (dupplicate code with + chunk_{send,recv}; a bit out of the plugin mecanism), but it should + work. + + - Simplify transport plugin (internal) interface by not passing any + argument to _server and _client, but embeeding them in the socket + struct directly. + +2004-09-28 Martin Quinson + - Finish the port to AIX. + autoconf was my problem (segfault within the malloc replacement + function. No idea why) + +2004-09-16 Martin Quinson + - Fix some size_t madness on 64bit architectures. + +2004-09-08 Martin Quinson + - Reduce the number of system headers loaded, overload some more system + calls (such as malloc to cast the result of the system one, and work + properly on AIX) + - Fix and reintroduce the config support + +2004-09-07 Martin Quinson + - Source code reorganization to allow Arnaud to surf all over there. + - Allow to document the logging categories. + - Remove all uppercase from logging categories and useless cleanup in names. + +2004-08-18 Martin Quinson + Version 0.6.2 (protocol not changed; API changed) + - Interface cleanup: gras_msgtype_by_name returns the type (instead of a + gras_error_t), and NULL when not found. Functions expecting a msgtype + as argument (msg_wait; msg_send) deal with NULL argument by providing a + hopefully usefull message. + - Portability to prehistoric sparcs again + +2004-08-17 Martin Quinson + Version 0.6.1 (protocol not changed; ABI not changed) + - prealloc some buffers to speed things up + +2004-08-11 Martin Quinson + Version 0.6 (protocol not changed; ABI expended) + - The parsing macro can deal with the references, provided that you add + the relevant annotations (using GRAS_ANNOTE(size,field_name)) + +2004-08-09 Martin Quinson + Version 0.5 (protocol not changed; ABI changed) + - Allow to off turn the cycle detection code in data exchange at + compilation time. It should be at run time, but I'm short of time (and + the config stuff is still broken). That way, we keep dict out of the + critical path, which is good because the performance is poor: + - search not dichotomial yet + - dynar give no way to access their content and memcpy everytime + - In composed data description (struct, ref and so on), stop foolness of + keeping the subtype's ID, but store the type itself. This keeps sets out + of the critical path, which is good since they rely on dynar and + dictionnaries. The only loose of that is that we cannot detect the + redeclaration of a structure/union with another content (but I'm not sure + the code detected well this error before anyway). We still can detect + the redefinition discrepancy for the other types. + - Use a whole bunch of optimisation flags (plus -fno-strict-aliasing since + it breaks the code because of type-punning used all over the place). + This breaks on all non-gcc architectures (for now). + + All those changes (plus the buffer of last time) allow me to gain 2 order + of magnitude on cruel tests consisting of 800000 array of integers on two + level of a hierarchical structure (200 secondes -> 4 secondes) + + API change: + - the selector of reference must now return the type it points to, not + the ID of this type. + +2004-08-06 Martin Quinson + Version 0.4 (protocol changed; ABI not changed) + - Allow to pass --gras-log argument to processes in simulation mode. Really. + - New debugging level: trace (under debug) to see effect of GRAS_IN/OUT + - Implement a buffer transport, and use it by default (it relies on tcp in + real life and on sg in simulation). + That's a bit hackish since I had a new field to the structure to store + its data without interfering with the subtype ones. Inheritance + is tricky in C. And that's a kind of reverse inheritance with one class + derivating two classes. Or maybe a game with java interfaces. Anyway, + that's damn hard in C (at least). + Moreover, I got tired while trying to ensure plugin separation and + genericity in SG mode. MSG wants me to do weird things, so let's go for + cruel hacks (temporarily of course ;). + See comment in transport_private.h:71 + - do not include all the _interface headers in private but in the files + which really need them (to cut the compilation time when they are + modified) + +2004-07-26 Martin Quinson + Version 0.3 (protocol not changed; ABI changed) + - Major overhault of the datadesc interface to simplify it: + - shorted the function names: + s/gras_datadesc_declare_struct/gras_datadesc_struct/ and so on + - add a trivial way to push/pop integers into the cbps without malloc. + This allows to make really generic sub_type description, which simply + pop their size of the stack. + - add a function gras_datadesc_ref_pop_arr() which does what users want + most of the time: Declare a dynamic array (which pops its size of the + stack) and declare a reference to it. Poor name, but anyway. + - kill the post-send callback, add a post-receive one + +2004-07-23 Martin Quinson + Version 0.2 (protocol changed; ABI changed) + - add some testing for cpbs in the test cases, and fix some more bugs. + This invalidate again the little64 data file, since I cannot regenerate + it myself. + - remove an awfull optimization in the logging stuff, allowing me to: + - understand it again + - learn gcc how to check that the argument match the provided format + - fix all errors revealed by gcc after that + - internal keys of dict are not \0 terminated. Deal with it properly in + loggings instead of segfaulting when the user want to see the logs :-/ + +2004-07-22 Martin Quinson + - Fix some stupid bug preventing cbps (callback postit) from working + 2004-07-21 Martin Quinson - Version 0.1.2 - Some documentation cleanups - remove the useless last argument of msgtype_declare - rename the Virtu functions to fit into the 'os' namespace + - move headers src/include -> src/include/gras/ and stop fooling with + gras -> . symbolic link + - make distcheck is now successful 2004-07-19 Martin Quinson Version 0.1.1