Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Forgot to commit the changes for surf.
[simgrid.git] / ChangeLog
index 3a1cc88..24947c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+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_<obj>_free() functions want a gras_<obj>_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.
+    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 interface by not passing any argument to
-    _server and _client, but embeeding them in the socket struct directly. 
+  - 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.
 
 2004-09-07 Martin Quinson
   - Source code reorganization to allow Arnaud to surf all over there.
-  - Allow to document the logging categories
+  - Allow to document the logging categories.
   - Remove all uppercase from logging categories and useless cleanup in names.
 
 2004-08-18 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 of of the
+    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
     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 this error well before anyway). We still can detect
+    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).