X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ff021a73f0cd26b2f27ca729783aa486393f9b3a..92bb2be06658bec5abe69a30642ed469e47708fd:/ChangeLog diff --git a/ChangeLog b/ChangeLog index e69de29bb2..dbf3584430 100644 --- a/ChangeLog +++ b/ChangeLog @@ -0,0 +1,433 @@ +2004-12-16 Martin + - Finish the port to windows (using mingw32 for cross-compile) + +2004-11-28 Arnaud + - Main loop and datastructures of SURF. A cpu resource object is + functionnal. Surf can thus be used to create cpu's with variable + performance on which you can execute some actions. + +2004-11-15 Martin Quinson + - Port to ARM. Simply added the alignment and size descriptions. Should + work, but the ARM machines are so slow that I didn't had the opportunity + to 'make check' overthere yet. + +2004-11-15 Arnaud Legrand + - Trace manager now written. It uses a heap structure and is therefore + expected to be efficient. It may however be speeded up (particularly + when many events occur at the same date) by using red and black + trees. One day maybe... + - Max-min linear system solver written. It uses a sparse matrix + structure taking advantage of its expected use. Most operations are + O(1) and free/calloc are called as few as possible. The computation of + the minimum could however be improved by using a red and black tree + (again ! ;). + +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 + - 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 + - Build shared library also + - Install html doc to the right location + - stop removing maintainer files in make clean + - build tests only on make check + +2004-07-13 Martin Quinson + version 0.1 + - No major issue in previous version => change versionning schema + - Re-enable little64 convertion test now that Abdou kindly regenerated the + corresponding dataset. + +2004-07-11 Martin Quinson + version 0.0.4 + - Get it working with any kind of structure (we can compute the padding + bytes remotely for all the architectures I have access to) + - Implement the structure parsing macro (still not quite robust/complete) + - Improvement to the remote testing toysuite + +2004-07-10 Martin Quinson + [autoconf mecanism] + - get ride of a bunch of deprecated macros + - actually run the test for two-compliment, not only compile it :-/ + - test whether the structures get packed (and bail out if yes. Damn. + Alignment is a serious matter) + - test whether the structures get compacted (but respecting the alignment + constraints of each types) + - test whether the array fields of structures can straddle alignment boundaries + [base] + - Damnit, double are bigger than float (typo in creation of 'double' datadesc) + (took me 2 hours to find that bug, looking at the wrong place) + - Add gras_datadesc_declare_{union,struct}_close(). They must be used + before sending/receiving and are used to compute the offsets of fields + - Given that padding size depend even on compiler options, keep track of + alignment and aligned_size only for the current architecture. Not a big + deal since we send structure fields one after the other (seems + reasonable). + - Add the datastructure used for IEEE paper by the PBIO guys to the test + program, let it work on linux/gcc/little32. portability todo. + +2004-07-08 Martin Quinson + - import and improve remote compilation support from FAST + - make sure make check works on half a dozen of machines out there + +2004-07-07 Martin Quinson + Let's say it's version 0.0.3 ;) + - Implement conversions (yuhu!) + - Let it work on solaris (beside conversion, of course) + - Stupid me, using rand() to generate the conversion datatests in not wise. + +2004-07-06 Martin Quinson + - Let make dist work, since I'm gonna need it to compile on remote hosts + - Let Tests/datadesc_usage write the architecture on which the file was + generated as first byte. + - Add PowerPC (being also IRIX64), SPARC (also power4) and ALPHA + architecture descriptions. + - Add datadesc_usage.{i386,ppc,sparc} files being the result of execution + on those architectures. + - Optimization: send/recv array of scalar in one shoot + +2004-07-05 Martin Quinson + - YEAH! GRAS/SG and GRAS/RL are both able to run the ping example ! + + - Plug a whole bunch of memleaks + - each process now have to call gras_{init,exit}. One day, their log + settings will be separated + - Continue the code factorisation between SG, RL and common in Transport. + +2004-07-04 Martin Quinson + [Transport] + - Redistribution between SG and RL. + We wanna have to accept in SG, so move accepted related parts of RL in + the common part. (more precisely, the dynar of all known sockets is no + more a static in transport.c, but part of the process_data) + [Core/module.c] + [gras_stub_generator] + - Bug fix: Do call gras_process_init from gras_init (wasnt called in RL). + +2004-07-03 Martin Quinson + - Create a new log channel tbx containing dict, set, log, dynar (to shut + them all up in one shot) + [DataDesc] + - Fix the ugly case of reference to dynamic array. + - New (semi-public) function gras_datadesc_size to allow the messaging + layer to malloc the needed space for the buffer. + [Transport] + - gras_socket_close now expect the socket to close (and not its address to + put NULL in it after it). This is because the socket passed to handlers + is one of their argument (=> not writable). + [Messaging] + - propagate the interface cleanup from last week in datadesc, ie remove a + superfluous level of indirection. User pass adress of variable + containing data (both when sending and receiving), and not of a variable + being a pointer to the data. Let's say that I like it better ;) + The price for that is constructs like "int msg=*(int*)payload" in + handlers, but it's a fine price, IMHO. + [examples/ping] + - Let it work in RL (yuhu) + +2004-06-21 Martin Quinson + [Transport] + - porting SG plugin and SG select to new standards (works almost). + - plug memleaks and fix bugs around. + + [DataDesc] + - cleanup the prototype of data recv and force users to specify when they + want to handle references to objects. Test case working even for cycles. + - plug memleaks. Valgrind is perfectly ok with this. + +2004-06-12 Martin Quinson + [Transport] + - cleanup the separation between plugin and main code in plugin creation + +2004-06-11 Martin Quinson + [Transport] + - Reput hook for raw sockets, needed for BW experiments + - kill a few lines of dead code + [Data description] Interface cleanup + - gras_datadesc_by_name returns the searched type or NULL. + That way, no variable is needed to use a type desc once, which makes + the code clearer. + - gras_datadesc_declare_[struct|union]_append_name is removed. The last + two parameters were strings (field name, type name), leading to + common errors. + [Dicos] Interface cleanup + - gras_dico_retrieve -> gras_dico_get ; gras_dico_insert -> gras_dico_set + This is consistant with the dynar API. + +2004-04-21 Martin Quinson + [Messaging] + - Porting to new standards. + [Data description] + - interface cleanup. + There is no bag anymore, no need to take extra provision to mask the + pointers behind "ID". + Better splitup of functions between files create/exchange/convert. + This is still a bit artificial since convert and receive are so + interleaved, but anyway. + [Virtu(process)] + - add a queued message list to procdata (the ones not matching criteria + in msg_wait) + - factorize some more code between SG and RL wrt procdata + [Tests] + - use gras_exit in example to track memleaks + - get rid of gs_example now that GS is properly integrated into gras + - update run_test to integrate the lastest tests (datadesc) + [Logging] + - rename WARNINGn macros to WARNn since it prooved error-prone + +2004-04-19 Martin Quinson + [Data description] + - register init/exit functions within gras module mecanism + - send/receive function. + Convertion is not implemented, but short-cutted if not needed. + struct/array elements are sent one by one (instead of block-wise), but + nobody really cares (yet). Get a prototype before optimizing. + - tests (using a file socket) for DD send/receive on: + - base types: int, float + - array: fixed size, string (ie ref to dynamic string) + - structure: homogeneous, heterogeneous + - chained list, graph with cycle + Believe it or not, valgrind is not too unhappy with the results. The + cycle happily segfaults, but the others are ok. And I'm sick of pointers + for now. + [Transport] + [File plugin] + - Bugfix when using a filename explicitely (instead of '-') + +2004-04-09 Martin Quinson + [Transport plugins] + - factorize more code between RL and SG in socket creation + - Complete the implementation and tests of: + o TCP + o file (only in RL, and mainly for debugging) + + I lost 3 days to design a portable address resolver, and then decided + that the prototype mainly have to run on my box. + Addressing portability too early may be like optimizing too early :-/ + [Tests] + - use gras_init in the Tests instead of the crappy parse_log_opt + (the latter function is removed) + [Conditional execution] + - New functions: gras_if_RL/gras_if_SG (basic support for this) + [Code reorganisation] + - Get rid of libgrasutils.a since it makes more trouble than it solves. + Build examples against the RL library, since there is no way to disable + its creation for now.