Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
02d321911e1568b2bcba8f23e33cc0ac56f10ec1
[simgrid.git] / ChangeLog
1 SimGrid (3.3.5-svn) unstable; urgency=low
2
3  The "C spoken, se habla Java, Ruby 話せます, fala-se Lua" release.
4
5  Java Bindings: Various Cleanups
6   * Remove put/get: no need to export deprecated interface in Java
7     Use send/receive instead.
8   * Cleanup the examples and add a README per directory
9   * Remove example autoDestination (that's the only way to go now)
10   * Remove example explicitDestination (was a plain copy of basic)  
11   * Make JniException a runtime exception, so that there is no need to
12     declare the fact that you may encounter such a beast. I guess that
13     nobody will ever want to survive such error.
14   * Create specific errors for each MSG case of failure:
15     host failure, transfer failure, timeout, task cancelled
16  Ruby and Lua Bindings: create them
17   * That's new and great, you should try them out. 
18     Same functionalities than Java bindings, only even less polished
19  SimDag:
20   * Kill the useless "rate" argument of SD_task_get_execution_time()
21     Everyone used to provide -1 as a value, it was not used, and the
22     semantic of a possible use wasn't even clear.
23   * SD_SCHED_NO_COST: Constant to use as cost in SD_task_schedule()
24     either as comm costs or compute costs to mean that there is no
25     such thing for that specific task. 
26  MSG: 
27   * In trace replay, allow to have one trace file per process.
28     Give the specific trace file as argument of each process, 
29       and call MSG_action_trace_run(NULL)
30     You can still have one merged file for each processes.
31   * Kill the MSG_paje_output() function. It's a noop since 2 years.
32   * Kill MSG_WARNING and MSG_FATAL return codes: they were not used
33     anywere in source.
34   * Add a MSG_task_set_data() function
35  SIMIX:
36   * add a SIMIX_sem_get_capacity() function
37  SURF:
38   * Rename configuration variables to start a hierarchy:
39     o cpu_model -> cpu/model
40     o network_model -> network/model
41     o workstation_model -> workstation/model
42   * New configuration variables:
43     o network/bandwidth_factor: correction to bandwith
44     o network/latency_factor: correction to latency
45     o netwotk/weight_S: correction to the weight of competing streams
46   * Add a long description to the models, that users can see with such
47     argument on the command line: --cfg=cpu/model:help
48  SMPI:
49   * Implement MPI_Get_count, MPI_MAXLOC, MPI_MINLOC
50  XBT:
51   * config: add the ability to set a default value after registration
52     Does not override any previously set value (e.g. from cmd line)
53  
54       
55  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
56
57
58 SimGrid (3.3.4) stable; urgency=low
59
60  The "Desktop Grid needs love too" release (also called Xmas release).
61
62  Models improvements:
63  * Major speedup in the maxmin system solving by using lazy evaluation
64    Instead of solving completely the maxmin system at each iteration, 
65      only invalidate (and recompute) the modified parts. 
66    This new feature is enabled in default models but you can try to
67      turn it on with "--cfg:maxmin-selective-update=1" for other models.
68  * Cas01 IMproved as default CPU model
69    This CPU model is the same Cas01 model, but it uses the
70      maxmin-selective-update flag and a heap structure to manage
71      actions on SURF kernel. 
72    It reduces the complexity to find the next action to finish and,
73      consequently, it's faster than the old Cas01.
74    This is the new default CPU model (Cas01).   
75  * Rename the old Cas01 model to Cas01_fullupdate
76    Keep the old cpu model Cas01 with the new name of Cas01_fullupdate.
77    Use "--cfg=cpu_model:Cas01_fullupdate" to use the old default CPU model.
78  * CpuTI (CPU Trace Integration)
79    A new CPU model whose objective is simulate faster when using
80      availability trace files. 
81    Instead of using a full featured, over engineered maxmin system for
82      CPU modeling, this model does the pre-integration of traces files
83      to calculate the amount of CPU power available, and so, executes
84      faster than the old CPU models. 
85    Use "--cfg=cpu_model:CpuTI" to change to this CPU model.
86  * Use LV08 as default network model since it gives better accuracy
87     for small messages and shouldn't change things for big ones.
88    Use --cfg=network_model:CM02 to get the previous behavior.
89    
90    
91          ******************************************
92          *DO NOT MIX 3.3.4 RESULTS WITH OLDER ONES* 
93          ******************************************
94    * The new CPU model may changes simulations!
95      The point is that events occurring at the exact same timestamp
96         are not scheduled in the same order with the old and new 
97         version. This may be enough to completely change the execution
98         of simulations in some cases. 
99    * The new network model will change simulations!
100      This new model is more realistic than the previous one, so you
101        should consider redoing your old experiments with this model.
102      Sorry for the inconvenience.
103      
104  Build System:
105  * Introduce the supernovae compilation mode
106    When compiled that way, the whole SimGrid (or almost) is put in a
107      single compilation unit and compiled in one shoot. 
108   This is to help gcc which has difficulties to inline stuff from one
109      file into another.
110   The speedup seem to be above 15%, althrough more tests are needed on
111      amd64 to confirm that gain.
112
113  MSG:
114  * Port of MSG's mailbox on top of SIMIX network
115    The put/get mechanism was greatly simplified on the way.
116
117  SIMIX:
118  * New SIMIX network module. Provides:
119    - Mailbox: rendez-vous mecanism to find with who you want to speak
120    - Synchronous send/recv: easier and hopefully faster since the
121      logic is handled in the maestro process directly now
122    - Asynchronous send/recv: you dreamt of it? It's here now
123      Too bad that nobody cared enough to propagate the change to MSG.
124  * Add semaphores as SIMIX synchronization mechanism.
125    
126  SimDag:
127  * new function SD_daxload(char*) to load a DAX file 
128    (see http://vtcpc.isi.edu/pegasus/index.php/WorkflowGenerator)
129  * Introduce typed tasks. Specify its kind and cost at creation. 
130    At scheduling, just give where it should be placed, and the cost
131    for each involved resource is automatically computed.
132    Existing constructors so far (more to come of course):
133     - SD_task_create_comm_e2e() for end-to-end communication
134     - SD_task_create_comp_seq() for sequential computation
135    Use SD_task_schedulev() / SD_task_schedulel() to schedule them.
136  * new function SD_task_dump() for debuging display
137  * new function SD_task_dotty(task,FILE*) writing to file the info
138    about the task in dotty format
139  * SD_task_dependency_exists() can now cope with having one of its
140    arguments NULL. If so, it tests whether the other argument has any 
141    dependency.
142  * Add getters on list of preceding/following tasks:
143     SD_task_get_parents(task) and SD_task_get_children(task)
144  * Add getters on amount of workstations and list:
145     SD_task_get_workstation_count(t) and SD_task_get_workstation_list(t)
146  * Add getter on task kind: SD_task_get_kind(task)
147  * Update the start_time and finish_time of tasks on completion/failure
148  * Bugfix: Remove task from state swags when destroyed
149  
150  GRAS:
151  * New function: void gras_cpu_burn(double flops) -- a simple CPU burner
152
153  XBT:
154  * New function: xbt_dynar_dopar(dynar,fun) to map a function over the
155    dynar with one separate thread per value of the dynar.
156  * Change the prototype of xbt_thread_create(), sorry. 
157    Added a boolean parameter indicating whether we want to join this
158    thread (used in SG only for now)
159  * Implement xbt_thread_join and xbt_thread_yield in SG also.
160    
161  Bug fixes:
162  * GTNetS wrappers should now be usable again (and betterly tested too)
163  * Fix a major regression from 3.2 where the timeout provided to
164    MSG_task_put_with_timeout() was used as absolute time before which
165    the comm should be done.
166  * Start to fix the <cluster> tag. 
167    - Internal links should be good now (beside of the loopback, which
168      use the private link instead)
169    - paths to the external world is still rather broken
170    - the <route:multi> tag is just broken. Actually that's brain-dead.
171      We need sth like <route:multi src="myCluster" dst="$*-${myCluster}">
172      to make it less stupid
173    ** Check your platform with teshsuite/simdag/platforms/flatifier **
174  * Fix a source-level compatibility glitch from 3.2: after defining
175    MSG_USE_DEPRECATED, you can use the old name
176    MSG_task_put_with_time_out() for MSG_task_put_with_timeout()
177  * Allow to compile from the SVN with automake 1.11
178  * Fix some problems when using the "start_time" tag in deployment XMLs.
179  * Fix #8569: XBT/synchro.h has redundant declarations
180  * Fix #8563: MSG return values and exceptions
181    Introduce a MSG_TIMEOUT_FAILURE return code and use it consistently.
182  * Integrate patch #8636: Obey DESTDIR when installing documentation.
183    Thanks to Robson Peixoto.
184  * Fix a vicious bug in dictionaries inducing that some elements were
185    not freed on xbt_dict_free()
186
187  Portability report of this version:
188   * Main portability targets:
189     - linux (ubuntu (804/810/910) /debian (4/5/testing) /fedora (core11)) 
190       on (amd64/i386/ia64)
191     - mac leopard on i386
192     Known problems: http://cdash.inria.fr/CDash/index.php?project=Simgrid
193      but nothing critical.
194   * Other platforms: windows, AIX and others were not tested for this release
195   
196  Timing report of this version:
197   * Lazy evaluation brings arbitrary speedup (ie, speedup depending on
198     scenario parameters). From 8h to a few seconds in desktop grid settings.
199   * Supernovae brings about 25% speedup on i386.
200
201  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Thu, 24 Dec 2009 19:07:39 +0100
202
203 SimGrid (3.3.3) stable; urgency=low
204
205  The "Need for Speed" release.
206  
207  The timings done to validate the 3.3.2 were faulty. 
208  Instead of being 5% faster, it was 15% slower (compared to 3.3.1).
209    
210  The problem was a conversion from a manually handled vector to
211    xbt_dynar_t on the critical path. 
212  xbt_dynar_foreach calls functions, inducing stack management crap.
213
214  We inlined these functions and xbt_dynar_foreach is now breath taking.
215  We also inlined xbt_swag_belong on the way.
216
217  Here are some approximate speedup measurements (on master/slaves
218   simulations lasting between 10s and 20s each):
219    3.3.1                   -> 3.3.2: about same performance
220    3.3.2                   -> 3.3.3: 40% speedup
221    3.3.1                   -> 3.3.3: 40% speedup
222    3.3.1 with inline patch -> 3.3.3: 30% speedup
223    
224  Our reading is that the refactoring which occurred in 3.3.2 made us
225   suffer much more from the xbt_dynar_foreach low performance, but
226   once we solved this, this refactoring proved to be very performance
227   effective. From the 40% speedup, somehow, 10% are due to the
228   inlining and 30% to the refactoring.
229
230  That's a pitty that gcc cannot inline functions placed in other files
231   alone. We have to choose between:
232   - break the encapsulation (by putting private data structures and
233     accessors in headers files to help gcc)
234   - live with low performance 
235   - switch to a decent compiler such as icc (not quite possible).
236
237  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Thu, 20 Aug 2009 21:21:33 +0200
238
239 SimGrid (3.3.2) stable; urgency=low
240
241  The "Simplicity does not preceed complexity, but follows it" release.
242
243  The main contributors of this release were (lexical order):
244    Silas De Munck, Stéphane Genaud, Martin Quinson, Cristian Rosa.
245        
246  SURF: 
247   * Extract the routing logic into its own object.
248     (was dupplicated in network.c and workstation_LV07.c;
249      Allows to implement other ways of storing that info)
250     => kill now useless network_card concept
251     - Use dynar to represent routes (instead of void** + int*)
252     - kill link_set (use surf_network_model->resource_set instead)
253     - Add a command-line option to choose the routing schema to use
254     - Add three new models: 
255       * Floyd (shortest path computed at initialization)
256       * Dijikstra (shortest path recomputed all the time)
257       * Cached Dijikstra (shortest path computed on need)
258       All these models where contributed by Silas De Munck, and are
259       described in his ICCS09 paper.
260
261   * Simplify model declaration
262     (less redirections, less function to write when defining a model)
263     - Factorize stuff between models:
264       - model_init/exit
265       - Set of resources:
266         surf_model_resource_set(model)
267         surf_model_resource_by_name(model, name)
268     - Unify the types of models in s_surf_model_t (using an union)
269     - Embeed fields of common_public directly into s_surf_model_t
270     - Rename model methods:
271       action_free ~> action_unref
272       action_change_state ~> action_state_set
273       action_get_state    ~> action_state_get
274     - Change model methods into functions :
275       (model)->common_public->action_use  ~> surf_action_ref
276       
277   * Implement a generic resource; use it as ancestor to specific ones
278     (allows to kill duplicated code in models)
279     Drawback: timer command don't need no name nor properties;
280               workstation_CLM03 don't need no properties
281     (but I guess we can live with those few bytes wasted)
282     
283   * Improve the action object model
284     - implement a constructor avoiding dupplicated code about field
285       initialization in generic_action part.
286       
287   * Kill the SDP model: it has an external dependency, is deprecated
288     in flavor of modern lmm models, and didn't compile since a while
289  
290  SIMIX:
291   * Relocation of the context module from XBT to SIMIX.
292     (the context were decoupled from the simix processes, duplicating a lot of code)
293     => a lot of code was factorized
294     - less overhead is introduced during scheduling
295     - simpler API for the context factory
296     - the logic for process creation,destruction and manipulation was simplified
297   * Simplification of the s_smx_process_t data structure.
298     => accesing the simix level data associated to a process is faster now, 
299        and the code is a lot more readable.
300        
301  SMPI:
302   * Implement some more MPI primitives: 
303     MPI_Bcast, MPI_Waitany, MPI_Waitall, MPI_Reduce, MPI_Allreduce, MPI_Scatter, MPI_Sendrecv, MPI_Alltoall
304     -implementation: Bcast: flat or 2-ary tree (default), 
305                      Barrier: 4-ary tree,
306                      Reduce: flat tree
307                      Allreduce: Reduce then Bcast
308                      Alltoall: "basic_linear" if data per proc < 3Kb, "otherwise pairwise". 
309                                Not yet implemented: "Bruck" for data per proc < 200b and comm size > 12
310                      Alltoallv: flat tree, like ompi
311                      Scatter: flat tree
312   * Add support for optimized collectives (Bcast is now binomial by default)
313   * Port smpirun and smpicc to OS X
314
315  SimDag:
316   * Kill SD_link_get_properties: hard to maintain and makes very little sense
317     Shout out if you used it.
318     
319  GRAS:
320   * Display the list of still queued messages in SG mode when existing
321     the process.
322
323  XBT:
324   * Add xbt_set_get_by_name_or_null() [Silas De Munck]
325   * Add xbt_graph_node_get_outedges() [Silas De Munck]
326   * Add xbt_str_from_file(FILE*)
327   * Add xbt_dict_get_key achieving a linear reverse search
328   * Remove the context module 
329
330  Portability report of this version:
331   * Main portability targets:
332     - Linux(debian)/x86/context   
333     - Linux(debian)/x86/pthreads 
334     - Linux(debian)/amd64/context 
335     - Linux(debian)/amd64/pthreads
336     On these, we still have the eratic breakages of gras/pmm and 
337       amok/saturate_sg reported in previous version. We still think
338       that the tests are the cause of the fault, not the tested code.
339       
340     - Mac OSX Leopard/x86/context
341     Still false negative in tesh autotesting.
342     Smpi still fails, but this time because readlink does not accept -f
343     Everything seems to work properly beside of that.
344     
345   * Exotic platforms:
346     - AIX version 5.3 (only tested contexts this time)
347       Smpi still fails there because mktemp is not installed. 
348       Everything seems to work properly beside of that.
349     - OpenSolaris 11
350       I managed to compile it for the first time, but several breakages.
351       Won't delay the release for this exotic platform.
352     
353   * Windows: it's still lagging behind. If you want to help, please
354     stand up.
355
356  Timing report of this version:
357   This version seem to be more than 5% faster than 3.3.1 (on linux
358     64bits with contextes). The gain is less than expected, we are
359     investigating this for next release.
360
361  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Wed, 19 Aug 2009 17:07:12 +0200
362
363 SimGrid (3.3.1) stable; urgency=low
364
365  OVERALL CHANGES:
366   * Implement a --cfg-help to show existing configuration variables
367   * Build chain do not require doxygen in maintainer mode
368
369  GRAS:
370   * fix a bug on struct sizeof computation, which prevented the
371     exchange of arrays of structs in some conditions
372     - added a regression test about this in datadesc_usage
373   * Allow the exchange of 0-long dynamic vectors.
374     - for that, use -1 as indicator of dynamic size instead of 0
375     - This implied to change any size from unsigned long to long,
376       reducing a bit communication abilities, but I guess that with
377       64bits being quite common, this is more than enough.
378     - This also induce a protocol change, thus bumping network protocol
379       version from 0 to 1 (if we have external users, we have to get
380       clean on that point too ;)
381     - added two regression tests about this in datadesc_usage
382   * Be more verbose when propagating local exceptions
383     This helps debugging.
384   * Display the status of simulated processes when receiving SIGINT in
385     simulation mode
386
387  MSG:
388   * Allow to control the simulation from a trace file.
389     New functions MSG_action_register() and MSG_action_trace_run()
390     The first one allows to associate a function execution to each
391      kind of action while the second one parses a trace file and
392      triggers the corresponding actions within the system.
393     For now, only a toy example is provided in examples/msg/actions
394   * Add an exemple of process migration in examples/msg/migration
395   * Fix a bug in task exchange which broke MSG_task_get_sender()
396     Add a teshsuite regression test for that.
397     [Bug: if MSG_task_get_sender() is called after sender exit,
398      bad things happen]
399   * Fix a bug which prevented suspend/resume to work properly
400   * Display the status of simulated processes when receiving SIGINT
401     This fixes a regression of v3.3. due to the introduction of SIMIX
402   * Bug fixing in failure management:
403     - trace could not start by a failure at time 0
404     - failure during communications were not working
405         
406  SIMIX:
407   * Add SIMIX_process_set_name() to change the name of the current
408     process in the log messages.
409   * Store smx_hosts in a dict since we only retrieve them by name
410   * Move the configuration infrastructure to surf
411
412  SIMDAG:
413   * Move the configuration infrastructure to surf
414
415  SMPI: 
416   * Massive internal cleanups:
417     - Store internal structures on processes instead of hosts (allows
418       to have more than one process per host, in addition of being more 
419       logical)
420     - Cleanup the initialization/finalization process
421     - Kill a whole bunch of unneeded synchronization: 
422       processes run in exclusive manner within the simulator
423     - Move queues from global tables to process data fields
424   * Improve smpirun:
425     - now accept -platform and -hostfile arguments
426     - Pass the right rank value to processes according to the hostfile
427   * Compile the examples by default, and use them as regression tests
428   * Implement MPI_Wtime()
429   * Change the reference speed to a command line option
430   
431  SURF:
432   * TCP_gamma can now be specified as command line option using
433     --cfg=TCP_gamma:10000000.0
434   * Change the --surf-path cmd line option into --cfg=path:
435   
436  XBT:
437   * Also include strbuff from xbt.h public header
438   * xbt_ex_display(): do not free the exception after displaying 
439     This allows to do more with the given exception afterward.
440     Users should call xbt_ex_free() themselves.
441     
442     
443
444  Portability report of this version:
445   * Main portability targets:
446     - Linux(debian)/x86/context   
447     - Linux(debian)/x86/pthreads 
448     - Linux(debian)/amd64/context 
449     - Linux(debian)/amd64/pthreads
450     These targets fail about 1/10 of times on gras/pmm, but we believe
451       that this is because of the test, not because of simgrid.
452     amok/saturate_sg fails even more rarely, and the test may not be
453       the problem.
454       
455     - Mac OSX Leopard/x86/context
456     The test suite still spits tons of errors because some obscure
457       force prevents us from removing the temporary directories
458       arguing that they still contain some metadata I've never heard of.
459     Smpi fails because seq is not installed.
460     Everything seems to work properly beside of that.
461     
462   * Exotic platforms:
463     - AIX version 5.3 (both contexts and pthread)
464       Smpi still fails there because mktemp is not installed. 
465       XML inclusions seems rosty on AIX.
466     
467   * Windows: it's still lagging behind. If you want to help, please
468     stand up.
469
470  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Sat, 27 Jun 2009 00:14:30 +0200
471
472 SimGrid (3.3) stable; urgency=high
473
474  OVERALL CHANGES:
475
476   * JAVA BINDINGS for MSG (you dreamt of them? We made them)
477     [Malek Cherier & Mt]
478
479   * Introduce the SIMIX module: factorize code between MSG and GRAS.
480     [Bruno Donassolo]
481   
482     Until now, GRAS were using MSG as an interface to SURF. It was
483     quite difficult because both interface have several differences
484     (MSG channels vs GRAS sockets were the most notable point).
485    
486     This also opens the gate to SMPI (which should occur soon) and speed
487     up simulations by to 40% (even if it were not the main goal).
488   
489     ************************************** 
490     *DO NOT MIX 3.2 RESULTS WITH 3.3 ONES* Simix may changes simulations!
491     **************************************
492     The point is that events occuring at the exact same timestamp are
493     not scheduled in the same order with the old and new version. This
494     may be enough to completely change the execution of simulations in
495     some cases. Sorry for the inconvenience.
496
497   * Cleanup and upgrade the XML format to push further scalability
498     issues (check http://hal.inria.fr/inria-00256883/ for more info)
499
500   * Improve the testing infrastructure with tesh. Now a very large part of
501     the code is tested not only by being run but also by checking that the
502     output match an expected output [Mt].
503
504   * Move on to FleXML v1.7 for the embeeded XML parsers. This version
505     is really less memory-demanding, which should allow you to use
506     larger files in SimGrid [AL].
507     
508   * Inform valgrind about our contextes, so that it becomes usable
509     with the default (and more effecient) version of SimGrid
510     [contributed by Sékou Diakite, many thanks]
511
512  GRAS:
513   * Introduce a listener thread in charge of receiving incomming
514     messages from the network. It allows to overlap communication and
515     computation but most notably, it removes some stupid deadlocks due
516     to the fact that so far, a process could not send and receive at
517     the same time. This made most non trivial communication schema
518     impossible.
519   * Convert the PIDs from long int to int to match the MSG ones (and
520     linux ones too) [Mt]
521   * New function: gras_agent_spawn() to launch a new process on
522     current host. Only working in simulation for now. [Mt]
523   * New function: gras_os_hostport() returning a constant form (ie,
524     not needing to be freed) of "gras_os_hostname():gras_os_myport()"
525
526  XBT:
527   * Make the backtrace of exceptions more human readable [Mt]
528   * New module: xbt/str [Mt]
529     a ton of string utility functions (split, join, printf to a newly
530     allocated buffer, trim, etc)
531   * New module: xbt/hash [Mt]
532     SHA1 hashing algorithm (more to come if needed)
533   * New module: xbt/synchro [Mt]
534     synchronization tools (mutex and conditions) working the same way
535     in simulation and in real life (mainly useful for GRAS, but not
536     only).
537   * New module: xbt/queue [Mt]
538     classical producer/consumer synchronization scheme
539   * xbt_dynar_new_sync() creates a synchronized dynar. All access
540     (using the classical functions will get serialized) [Mt]
541   * Make dictionary internal table dynamic. No need to specify its size
542     anymore; functions xbt_dict_new_ext() and xbt_dict_hashsize_set()
543     thus dropped. [Mt].
544   * Make sure the log channels are organized as a tree under windows
545     (because of ANSI C compatibility issue, any channel were child of
546      root directly) [Mt].
547
548  SURF:
549   * Cleaned many thing in surf and fixed a few bugs [AL].
550   * Add a nice command line configuration mechanism to compose models [AL].
551   * Add a new model for parallel tasks (ptask_L07) that is less buggy than
552     the previous one (KCCFLN05). It relies on something that looks like
553     a max-min sharing mechanism but cannot be written as such. A new solver
554     was thus designed [AL].
555   * Add a new solver to lmm. Based on Lagrange optimization and
556     gradient-based descent, it enables to efficiently maximise systems s.a
557   
558      sum f_i(x_i) s.t Ax<= b  with A_{i,j}>=0 and f_i a concave function.
559
560     This solver enables to propose two new network models for TCP Reno and
561     TCP Vegas based on Low's work. These models still need to be fully
562     tested though [Pedro Velho].
563
564  SIMDAG [AL]:
565   * Bug fix in SD_simulate. Now the time bound given as argument is
566     used.
567   * Use the new parallel task model (ptask_L07) as default.
568   * Use the SURF command line configuration mechanism.
569   * 0-size tasks (for synchronization) should now work.
570
571  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Sun Apr 12 05:20:36 CEST 2009
572
573 SimGrid (3.2) stable; urgency=high
574
575   OVERALL CHANGES:
576    * Port to windows.
577      We still experience issues on this platform, but we believe that at
578      least MSG is usable.
579
580   GRAS API BREAKAGE (for simplification purpose, sorry):
581    * the gras_msgtype_by_name is not used anymore. Instead of 
582        gras_msg_send(toserver, gras_msgtype_by_name("request"), &request);
583      you can write (and must)
584        gras_msg_send(toserver, "request", &request);
585    - If you still want to pass a gras_msgtype_t to the function (to cache
586      the type and avoid the lookup time), use the gras_msg_send_() variant.
587    - Impacted functions:
588      gras_cb_register, gras_cb_unregister, gras_msg_send, gras_msg_wait,
589      gras_msg_rpccall, gras_msg_rpc_async_call, gras_msg_wait_ext
590    * The callbacks are now expected to return 0 when everything went well
591      (just like the main() function)
592
593   GRAS new features and improvements:
594   * New module mecanism where user code can use per process globals [Mt]
595     This is similar to gras_userdata_*() functions, but for libraries. It
596       factorize some code developped over and over in the examples and AMOK.
597     It has still to be documented and used (only amok/peermanagement is
598       converted for now).
599   * Fix a vicious bug in the TCP buffering mecanism which leaded to message
600     loss when they were small enough to fit into the buffer and sent quickly
601     enough so that they can all get received in one shoot.   
602   * gras_datadesc_by_name and gras_msgtype_by_name: now raise an exception
603     if not found. Use the *_or_null() variant for the old semantic.
604   * In gras_msg_handle, do not discard messages without callback.
605     They are probably messages to be explicitly awaited later (ie, proofs of
606     mis-synchronization in userland since they are sent before being awaited)
607     No big deal usually.
608   * gras_socket_meas_send/recv: semantic changed!
609     The numerical arguments used to be (1) the total amount of data to send
610     and (2) msg_size. This was changed to (1) msg_size and (2) amount of
611     messages. This was need for the fool willing to send more than MAXINT
612     bytes on quite fat pipes.       
613         
614   AMOK:
615   * Do really rename the hostmanagement module to peermanagement. [Mt]
616     Ie, rename functions from amok_hm_* to amok_pm_*. This breaks the API,
617     but this is rather new and this was documented in the module
618     documentation (poor excuses, I admit)
619   * Bandwidth measurement semantic changed! This follows the changes to
620     gras_socket_meas_send/recv explained above.
621     
622   SIMDAG:
623   * A sequential mode has been added to the workstations. When a workstation
624     is in sequential mode, it can execute only one task, and the other tasks
625     are waiting in a FIFO. [Christophe Thiery]
626
627   SURF:
628   * The KCCFLN05 workstation model now handles parallel tasks. It is the
629     model for SIMDAG. [Christophe Thiery]
630   * Bug fix in the maxmin solver: Some values were close to 0 instead of
631     equal to 0, which caused some bad behaviors in
632     saturated_constraint_set_update. I now use a threshold mechanism like in
633     surf. [AL]
634
635   XBT:
636   * When running manually src/testall, you select specific units [Mt]
637     testall is the result of our cunit mecanism, and should replace all
638     the scripty thingy around since bash don't run easily on billware.
639
640   * A mallocator system has been added. [Christophe Thiery]
641     Mallocators allow you to recycle your unused objects instead of freeing them
642     and allocating new ones.
643
644   Documentation update:
645   * FAQ reworking + New FAQs:
646     - "Valgrind spits tons of errors!" [Mt]
647     - "How to repport bugs" [Mt]
648     - "Cross-compiling a Windows DLL of SimGrid from Linux" [Mt]
649     - "What is the difference between MSG, SimDag, and GRAS?" [Mt]
650     - Communication time measurement within MSG [AL]
651     - I experience weird communication times when I change the latency [AL]
652   * GRAS tutorial [Mt]
653     It contains:
654      - an introduction to the framework and to the used communication model
655      - an initiatic tour introducing the most proheminent features:
656        o Part 1: Bases
657          . Lesson 0: Installing GRAS
658          . Lesson 1: Setting up your own project
659        o Part 2: Message passing
660          . Lesson 2: Exchanging simple messages
661          . Lesson 3: Passing arguments to the processes (in SG)
662          . Lesson 4: Attaching callbacks to messages
663          . Lesson 5: Using globals in processes
664          . Lesson 6: Logging informations properly
665          . Lesson 7: Using internal timers
666          . Lesson 8: Handling errors through exceptions
667          . Lesson 9: Exchanging simple data
668          . Lesson 10: Remote Procedure Calling (RPC)
669          . Lesson 11: Explicitely waiting for messages
670          . Recapping of message passing features in GRAS
671      - A HOWTO section containing:
672        o HOWTO design a GRAS application
673        More are due, of course. They will come latter. In the meanwhile, you can 
674        check the examples which are still here.
675
676  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri Mar 16 21:11:46 CET 2007
677
678 SimGrid (3.1) stable; urgency=high
679
680   General:
681   * Port to gcc 4.x   
682     There was a stack corruption somewhere, visible only when optimizing
683     with these versions. [Vince]
684
685   SIMDAG:
686   * This is a NEW module! SimDAG (SD for short) is a revival of the old SG
687     module that enabled to play with Directed Acyclic Graphs. It is built
688     directly on top of SURF and provides an API rather close to the old
689     SG. Some old codes using SG are currently under rewrite to check that
690     all needful functions are provided. [Christophe Thiery]
691         
692   SURF:
693   * Complete rewrite of the KCCFLN05 workstation model. It is now an
694     extension of the classical CLM03 model that gracefully handles
695     failures. This is now the default model for MSG and GRAS. It doesn't
696     handle parallel tasks yet though. [AL]
697   * Bug fix: Weights were not correctly set in the network part. 
698     WARNING: This may have resulted in incorrect results with simulations
699     where there are more than one flow on a given link. [AL]
700
701   SURF, MSG, GRAS:
702   * After a (long ?) discussion on simgrid-devel, we have decided that the
703     convention we had on units was stupid. That is why it has been decided
704     to move from (MBits, MFlops, seconds) to (Bits, Flops, seconds). 
705     WARNING : This means that all previous platform files will not work as
706     such with this version! A warning is issued to ask users to update
707     their files. [AL]
708     A conversion script can be found in the contrib module of the CVS, under
709     the name contrib/platform_generation/surfxml_update.pl [MQ]
710
711   MSG,GRAS:
712   * Bug fix: Processes were started in reverse order, wrt deployment file.
713     WARNING: if your code relies on this bug, please fix it.    [AL]
714   * Bug fix: Add a test in MSG_task_execute to stop whenever a task is
715     being executed on two different locations.                  [AL]
716   * Bug fix: Failures are now better supported thanks to Derrick's tests
717     (there was many failure situations I hadn't thought of and that weren't
718     correctly handled). [AL]
719   * New function: MSG_host_is_avail indicates you whether a given m_host_t
720     is up or down. [AL]
721
722   GRAS:
723   * New! a real RPC mecanism, as it ought to be since too long. [MQ]
724       Exception occurring on server-side are propagated back to client (!).
725       
726     API CHANGE: the callback changed their prototype. Change:
727         int my_handler(gras_socket_t expeditor, void *payload_data) {
728       to:
729         int my_handler(gras_msg_cb_ctx_t ctx  , void *payload_data) {
730           gras_socket_t expeditor=gras_msg_cb_ctx_from(ctx);
731       and you're set.
732   * New! function: gras_msg_handleall to deal with all messages arriving
733       within a given period.
734   * New! function: gras_socket_server_range to get a server socket in a
735     range of port numbers (ease to avoid port number conflicts) [MQ]
736   * New! gras processes display their backtrace when they get a SIGUSR1
737       or when Ctrl-C is pressed. Use Ctrl-C Ctrl-C to exit.
738       Sweet to debug RL processes [MQ]
739
740   AMOK:
741   * Bandwidth module: 
742     - Do not force experiment sizes to be expressed in kb, or it becomes
743       impossible to measure the latency this way (needs one byte-long tests)
744     WARNING: this changes the amok_bw_* function semantic. [MQ]
745     - Implements the link saturation stuff. [MQ]
746   * Peer management module: 
747     New! module factorizing code that we wrote over and over [MQ].
748       
749   XBT:
750   * New module: cunit (my jUnit implementation in ansi C) [MQ]
751     - Test units are placed directly into the library code, they get extracted
752       automatically and placed into the src/testall binary.
753     - Convert most of the XBT tests to this system.
754   * New functions: xbt_dynar_getfirst_as() and xbt_dynar_getlast_as() [MQ]
755   * XML parsing: rewrote parts of flexml to enable multiple xml parsers to
756     live in the same C code. This required to change a little bit the API
757     of surfxml parsing but shouldn't be an issue for end-users. [AL]
758   * New module: sparse graph structure with basic algorithms (this is work
759     in progress and the API is not considered to be frozen yet). [AL]
760   * Display more information on backtraces: source line & function names are
761     now displayed just like valgrind does (rely on addr2line tool) [MQ]
762   * New function: xbt_backtrace_display(). Sweet while debuging [MQ]
763   * Reworked a little bit some #include statements to load only required
764     headers. Some user code that relied on SimGrid to include stdlib or
765     stdio may need to include it by themselves. [AL]
766   * Fixed xbt/log.h. A missing SG_BEGIN_DECL prevented compilation with
767     g++. [AL]
768   * Renamed xbt_host_t into xbt_peer_t since it betterly describes what I
769     meant. This breaks the API of AMOK and of xbt/config. Sorry about this,
770     but I guess that almost nobody used those parts. [MQ]
771
772  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri, 14 Jul 2006 01:32:27 +0200
773
774 SimGrid (3.0.1) stable; urgency=low
775
776   XBT:
777   * Unfortunately, I had missed 5 misnamed functions:
778       xbt_fifo_item_t xbt_fifo_newitem(void);
779       void xbt_fifo_freeitem(xbt_fifo_item_t);
780       xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l);
781       xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i);
782       xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i);
783     They're now deprecated. Please use their new versions:
784       xbt_fifo_item_t xbt_fifo_new_item(void);
785       void xbt_fifo_free_item(xbt_fifo_item_t);
786       xbt_fifo_item_t xbt_fifo_get_first_item(xbt_fifo_t l);
787       xbt_fifo_item_t xbt_fifo_get_next_item(xbt_fifo_item_t i);
788       xbt_fifo_item_t xbt_fifo_get_prev_item(xbt_fifo_item_t i);
789     [AL]
790   * Bugfix: really disconnect fifo items which are remove_item()ed [AL]
791   * Documentation: xbt_log module unmercifully reworked [MQ]
792   * Bugfix: there was a problem with the ending of contexts with 
793     the pthread backend. It caused some weird deadlock or behavior
794     depending on the pthread implementation. [AL]
795   * Bugfix: get the exceptions raised in the simulator repport where
796     and why they come from when they are not catched in time [AL, MQ]
797
798   SURF:
799   * Bugfix: Do repport the error when two non-connected hosts try to
800     exchange data (Thanks to Flavien for stumbling into this one) [AL]
801   
802   SURF:
803   * Add additionnal checkings on communications. Assert that two
804     communicating hosts are connected by a set of links... [AL]
805         
806   MSG:
807   * Add additionnal checkings on channel values in communication [AL]
808   * New: MSG_task_get_source to see on which host a task was generated [HC]
809   * New: int MSG_task_probe_from_host(int channel, m_host_t host): returns
810     the number of tasks waiting to be received on channel and sent
811     by host. [AL]
812   * New: MSG_error_t MSG_task_get_from_host(m_task_t * task, int channel, m_host_t host); 
813     waits for the first task coming from a given host.. [AL]
814         
815   GRAS new functionnalities: [MQ]
816   * Enhance the parsing macro to allow the size of multidimentional objects
817     to be given thru annotations.
818   * New example (and documentation): Matrix Multiplication a la RPC 
819     (as when I was young!) and fix a bunch of bugs found on the way.
820
821   GRAS performance improvements: [MQ]
822   [DataDesc]
823   * Reduce the amount of cbps creation/destruction by making it static to 
824     datadesc_send/recv() and using a (newly created) cbps_reset (based on 
825     dynar_reset ())
826   [Virtu]
827   * Change libdata to a set so that we can search for stuff by ID (and thus 
828     reduce the insane amount of dict lookups)     
829   
830   [Transport]
831   * Actually implement gras_datadesc_copy() so that we don't have to mimick
832     RL communication on top of SG since it's so uneffective. 
833     It may also be used for inter-thread communication in RL, one day. 
834   * Use gras_datadesc_copy() to exchange messages on top of SG 
835     Allows to:
836     - improve message exchange performance on top of SG
837     - deprecate transport_plugin_sg.c:gras_trp_sg_chunk_send() & recv()
838   * Don't exchange on the network the size of the used part of buffer,
839     instead, specify the possible buffer size to read(). 
840     Advantages:
841      - reduces the amount of read/write calls (one pair per exchange)
842      - reduces the amount of exchanged data (the size)
843      - allows to retrieve all arrived data on receiver side, if we don't need
844        it right now (subsequent read will peek the buffer)
845      - allows the receiver to proceed with the begining of the stream before
846        everything is arrived
847      - make it possible to build an iov transport (using readv/writev)
848     Extra difficulty: 
849      - take care of the data with non-stable storage (like stacked data),
850        and bufferize them.
851   * If possible, TCP send uses vector I/O (when writev() is here) 
852      - Don't use it for receive since we send data sizes and data on the
853        same stream, so we wouldn't be able to chain large amount of chunks
854        before having to flush the stuff to read the size.
855   * Rework the transport plugin mecanism to simplify it and reduce the
856     amount of pointer dereferencement when searching for the right function 
857     to use. 
858
859   * I guess that now, we do almost as few system calls as possible while
860     doing as few data copy as possible.
861
862     To improve it further, we could try to send all the sizes first and then
863     all the data (to use iov on receiving size), but it's only a partial
864     solution: when you have 2 dimensional data, the sizes of the second
865     dimension is data of the first dimension, so you need 3 streams.
866
867     I'm not sure the potential performance gains justify the coding burden.
868
869  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 21 Oct 2005 14:42:20 +0200
870
871 SimGrid (3.00) stable; urgency=high
872   
873  SURF:
874   * New! Give the possibility to hijack the surf parser and thus bypass 
875     MSG_create_environment and MSG_launch_application. Have a look at
876     examples/msg/msg_test_surfxml_bypassed.c to see how it can be done.
877         
878  -- Arnaud Legrand <simgrid-devel@lists.gforge.inria.fr>  Sat, 20 Aug 2005 23:25:25 -0700
879
880 SimGrid (2.96) unstable; urgency=low
881
882   AKA SimGrid 3 rc 2.
883   
884   XBT:
885   * New! Exception handling with setjmp or such (code from OSSP ex) [MQ]
886     This deprecates the xbt_error_t mecanisms. 
887     It modifies (simplifies) all XBT and GRAS API.
888     MSG API keeps unchanged (exceptions raised by XBT are catched from 
889      within MSG and masked with existing error handling facilities)
890
891   SURF:
892   * New! Add a FATPIPE model. [AL]
893   * New! Add a parallel task model. [AL]
894   * New! Add automatically a loopback interface (in the default
895     network model) if none was precised.
896
897   MSG
898   * Bugfix: MSG_process_resume now works with the current running process. 
899     [AL]
900   * New! Add MSG_parallel_task_create and MSG_parallel_task_execute. [AL]
901   * Modification of MSG_task_get_compute_duration. Once a task has been
902     processed, the value returned by this function is now equal to 0. [AL]
903   * New! Add double MSG_task_get_remaining_computation(m_task_t task) and
904     MSG_error_t MSG_task_cancel(m_task_t task). Add a state
905     (MSG_TASK_CANCELLED) to MSG_error_t corresponding to the cancelation
906     of a m_task. For now, MSG_task_cancel only works with computation
907     tasks. [AL]
908   * New! Add double MSG_get_host_speed(m_host_t h) that returns the speed
909     of the processor (in Mflop/s) regardless of the current load on the
910     machine. [AL]
911   * API Change: use proper naming convention for MSG_getClock and 
912     MSG_process_isSuspended: MSG_get_clock and MSG_process_is_suspended.
913     [AL]
914   * New! Add void MSG_task_set_priority(m_task_t task, double priority). 
915     This function changes the priority of a computation task. This priority
916     doesn't affect the transfer rate. A priority of 2 will make a task 
917     receive two times more cpu power than the other ones. This function 
918     has been added to suit the needs of Nguyen The Loc and hasn't been that
919     much tested yet. So if it fails, please report it and send me your code. 
920     [AL]
921   * API Change: removed all functions and types that were marked "deprecated" 
922     since many months. Renamed MSG_global_init_args to MSG_global_init.
923
924  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Mon,  8 Aug 2005 17:58:47 -0700
925
926 SimGrid (2.95) unstable; urgency=low
927
928   XBT
929   * Steal some nice code to GNU pth to fix context detection and usage [AL]
930   * Cleanup in the xbt_config API; add configuration callbacks. [MQ]
931   * Cleanup in the initialization API: the unused "defaultlog" is dead. [MQ]
932
933   SURF
934   * Bugfix: Allow absolute paths for platform description files [MQ]
935   * Bugfix: do free the variables after use. Leads to drastic performance 
936     improvement [AL] 
937   * Implement max_duration (ie, timeouts) on resources [AL]
938
939   MSG
940   * Implement MSG_config to configure MSG at runtime. xbt_cfg test on a real
941     case ;) [MQ]
942   * Implement MSG_channel_select_from() to help GRAS now that SURF provide
943     the needed support (timeouts) [AL]
944
945   GRAS (new features)
946   * Implement measurement sockets. You can now get the bandwidth between two
947     hosts thanks to AMOK (see below). [MQ]
948   * gras_datadesc_dynar() builds a dynar type descriptor, allowing to send
949     dynar over the network (yeah) [MQ]
950   * Real (even if simplistic) implementation of gras_os_myname() on RL [MQ]
951   * simple/static token-ring example. [Alexandre Colucci and MQ]
952   * Use MSG_channel_select_from() and remove the *slow* hack we had to put
953     in place before [MQ]
954   
955   GRAS (bug fixes)
956   * Differentiate the types "char[22]" and "unsigned char[22]" in automatic
957     type parsing. "short" and "long" modifiers were also ignored; other
958     modifier (such as reference level) are still ignored. [MQ] 
959   * Embeed the buffer size within the buffer itself on SG. [MQ]
960     That way, send() are atomic and cannot get intermixed anymore (at least
961     the ones which are less than 100k; bigger messages still have the issue)
962   * Array size pushed by the field, not by the field type (or each
963     and every long int will push stuff to the cbps) [MQ]
964   * use select() to sleep since it allows to portably sleep less than one
965     second. [MQ]
966
967   GRAS (minor cleanups)
968   * <project>.Makefile.local (generated from gras_stub_generator) |MQ]:
969     - Do clean .o files
970     - Compile with -g
971   * Type Callbacks now receive the gras_datadesc_type_t they work on as argument.
972   * type category 'ignored' killed as it was never used and were difficult
973     to transmit.
974   * whether a type can cycle or not is now a flag, leaving room for more
975     flags (as "ignored", if we feel the need one day ;)
976   * Rename raw sockets to measurement sockets since "raw" has another
977     meaning in networking community. 
978   
979   AMOK 
980   * Advanced Metacomputing Overlay Kit introduction. It is based over GRAS
981     and offers features not belonging to GRAS but that most applications
982     need. One day, it may be a set of plugins loadable at runtime.
983   * New module: bandwidth 
984     bandwidth measurement between arbitrary nodes running this module. [MQ]
985
986  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Thu, 30 Jun 2005 16:29:20 -0700
987
988 SimGrid (2.94) unstable; urgency=low
989
990   The first beta release of SimGrid 3 !
991
992   >>>Arnaud<<<
993   (documentation)
994   * Update the main page and the FAQ. Adding references to gforge.
995
996   (gras)
997   * Add a gras_os_getpid function.
998
999   (msg)
1000   * Add MSG_task_get_compute_duration() and MSG_task_get_data_size()
1001   * Extend the logs so that they also print PID, hostname, date, ... if
1002     available.
1003   * Convert the MSG example to the use of xbt_logs instead of PRINT_MESSAGE,
1004     and kill the old version which were in testsuite/
1005   * Rewrite tools/MSG_visualization/colorize.pl for using with logs instead
1006     of PRINT_MESSAGE
1007
1008   (xbt)
1009   * Add xbt_os_time(). As the rest of xbt/portability, this is not public
1010     for users. Instead, each programming environment (GRAS, MSG,...) use it
1011     when needed to provide such a feature to users.
1012     Don't shortcut the mecanism or you will also shortcut the virtualization
1013     you need on the simulator.
1014
1015   >>>Martin<<<
1016   (infrastructure)
1017   * Cleanups in configury with regard to compile optimization/warning flags.
1018     Also add -fno-loop-optimize to any powerpc since it's the optimization
1019     killing gcc (< 3.4.0).
1020   * Doxygen cleanups: move MSG examples, kill the second Doxygen phase
1021     needed by MSG examples complications
1022   * Borrow configury beautifications from PHP
1023
1024   (xbt)
1025   * Bugfix: XBT_LOG_NEW_DEFAULT_CATEGORY now compiles without compiler
1026     warning (thanks loris for stumbling into this one).
1027   * Bugfix: stop loading private headers (gras_config.h) from the public
1028     ones (xbt/swag.h).
1029
1030   (gras)
1031   * Change SIMGRID_INSTALL_PATH to GRAS_ROOT in Makefiles generated for user.
1032   * Rename gras_get_my_fqdn to gras_os_myname and implement it in the simulator
1033     RL would imply a DNS resolver, which is *hard* to do in a portable way
1034     (and therefore delayed).
1035   * Implement a real timer mecanism and use it in timing macros. This allows
1036     to avoid rounding errors and get a 0.000005 sec precision in timing
1037     macros. While I was at it, various cleanups:
1038      - allow to declare more than one timed section per file (fix a stupid bug)
1039      - move some private declaration to the right place
1040      - merge conditional execution and timing macros into emulation module
1041      - document the module
1042      - make sure the module cleanups its mess on gras_exit
1043   * Documentation improvements:
1044      - (new) how to compile applications using GRAS
1045      - (new) emulation support (timing macros)
1046
1047  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 13 May 2005 10:49:31 +0200
1048
1049 SimGrid (2.93) unstable; urgency=low
1050
1051   Alpha 4 on the path to SimGrid 3 (aka the "neuf-trois" version)
1052
1053   [Arnaud]
1054    - Use Paje properly where used. Still to be sanitized properly.
1055    - Portability fix: Add an implementation of the contexts using pthread
1056
1057   [Martin]
1058   (misc)
1059    - Add xbt_procname(): returns the name of the current process.
1060      Use it to show the current process's name in all logging.
1061   (infrastructure)
1062    - fix detection of older flex version and the reaction, since we do
1063      depend on modern ones (we use lex_destroy)
1064    - Better separation of SG and RL in the libs: remove all simulation code
1065      from libgras. As a result, this lib is now only 200k when stripped.
1066      Some of the xbt modules may also be duplicated (two sets and such) and
1067      should be cleaned/killed before SG3.
1068    - Insist on using xlC on AIX because of weird problems involving gcc there.
1069    - Cleanup the make remote stuff. This is now done by scripts
1070      tools/graspe-{master,slave} (GRAS Platform Expender). This is still
1071      mainly for our private use, but we're working on changing them to user
1072      tools, too.
1073   (gras)
1074    - Bugfix: flush the socket on close only if there is some *output*.
1075    - Bugfix: flush idempotent when there's nothing to send (don't send size=0)
1076   (msg)
1077    - Add MSG_task_get_name. The task names are mainly for debugging purpose,
1078      but anyway.
1079
1080  -- SimGrid team <simgrid2-users@listes.ens-lyon.fr>  Fri,  4 Mar 2005 14:32:37 -0800
1081
1082 SimGrid (2.92) unstable; urgency=low
1083
1084   Alpha 3 on the path to SimGrid 3
1085   
1086   [Arnaud]
1087   (gras)
1088    - New! First try of benchmarking macros.
1089    - New! First try so that gras_stub_generator generate deployment and
1090      remote compilation helpers.
1091   (msg)
1092    - Bugfix: Initialization fix in msg_test.
1093
1094   [Martin]
1095   (surf)
1096    - Bugfix: applied patch to lexer so that it doesn't need a huge heap.
1097   (xbt)
1098    - Bugfix: let dicts work with NULL content (_foreach didn't) and cleanups
1099   (gras)
1100    - API Change: gras_os_sleep to take the amount of seconds as a double.
1101      Accepting an int was error prone since it was the only location where
1102      seconds were coded as such. It leaded to damn rounding errors.
1103    - Bugfix: Hard to belive that timers ever worked before this.
1104
1105  -- SimGrid team <simgrid2-users@listes.ens-lyon.fr>  Wed, 23 Feb 2005 22:09:21 +0100
1106
1107 SimGrid (2.91) unstable; urgency=low
1108
1109   Alpha 2 on the path to SimGrid 3
1110   
1111   [Arnaud]
1112   (surf)
1113    - Bug fix in the lmm_solver.
1114   (msg)
1115    - New! Interface to Paje (see http://www-id.imag.fr/Logiciels/paje/) 
1116      through the function MSG_paje_output.
1117    - New! Introducing two new functions MSG_process_kill() and MSG_process_killall().
1118    - It is possible to bound the rate of a communication in MSG with 
1119      MSG_task_put_bounded() (was already in the previous version but I had forgotten 
1120      to write it in the changelog).
1121    - Bug fix to let GRAS run on top of MSG until we move it directly on top
1122      of the SURF.
1123     
1124   [Martin]
1125   (infrastructure)
1126    - Various cleanups to the autotools stuff
1127    - Begin to move Gras examples to examples/gras/
1128    - Let make distcheck work again (yeah!)
1129   (documentation)
1130    - documentation overhauled using doxygen. 
1131      gtk-doc-tools is dead in SimGrid now.
1132    - Automatically extract all existing logging categories, and add the list
1133      to the documentation (long standing one, to say the less)
1134   (gras)
1135    - Cleanup the known architecture table. Reorder the entries to group what
1136      should be, and use a more consistent naming scheme.
1137      (some of the test dataset are still to be regenerated)
1138    - New! Allow library to register globals on each process just as userdata
1139      does. 
1140       This is implemented using a xbt_dict and not a xbt_set, so we loose the
1141        lookup time (for now).
1142       Use it in msg and trp.
1143       This cleans a lot the internals and helps enforcing privacy of the
1144        headers between the gras components.
1145    - New! Add a timer mechanism, not unlike cron(8) and at(1). 
1146    - Bugfix: gras_os_time was delirious in RL.
1147    - Bugfix: gras_trp_select/RL don't run into the wall when asked to select
1148      onto 0 sockets.
1149    - Reenable GRAS now that it works.
1150
1151  -- Arnaud Legrand <Arnaud.Legrand@imag.fr>  Mon, 14 Feb 2005 14:02:13 -0800
1152
1153 SimGrid (2.90) unstable; urgency=low
1154
1155   Alpha 1 on the path to SimGrid 3
1156
1157   * It is a long time since the last release of SimGrid. I'm sorry about
1158     that but as I had told you, I was rewriting a lot of things. I apologize 
1159     to those who had been reporting bugs to me and that I had not answered. 
1160     If your bug is still in the new version, please tell me. Here is a 
1161     summary of the main changes.
1162
1163   * REVOLUTION 1: The SimGrid project has merged with the GRAS project
1164     lead by Martin Quinson. As a consequence SimGrid gains a lot in
1165     portability, speed, and a lot more but you'll figure it out later. 
1166     SimGrid now comprises 3 different projects : MSG, GRAS and SMPI. 
1167     I wanted to release the new MSG as soon as possible and I have 
1168     broken GRAS, which is the reason why, for now, only MSG is fully 
1169     functional. A laconic description of these projects is available 
1170     in the documentation.
1171   
1172   * REVOLUTION 2: I have removed SG and I am now using a new simulation
1173     kernel optimized for our needs (called SURF but only the developers
1174     should use it). Hence, MSG is now roughly 30 times faster and I think
1175     that by rewriting a little bit MSG, I could event speed it up a little
1176     bit more. Beside the gain in speed, it is also much easier to encode a
1177     new platform model with SURF than it was with SG. More to come...
1178   
1179   * REVOLUTION 3: I have tried to change a little as possible the API of
1180     MSG but a few things really had to disappear. The main differences
1181     with the previous version are :
1182        1) no more m_links_t and the corresponding functions. Platforms are
1183          directly read from a XML description and cannot be hard-coded
1184          anymore. The same format is used for application deployment
1185          description. The new format is described in the documentation. 
1186          Have a look in tools/platform_generation. There is a tiny script 
1187          that converts from the old platform format to the new one. Concerning
1188          the application deployment format, parsing the old one is tricky.  
1189          I think most of you should however be able to convert your files.  If 
1190          it is really an issue, I can write a C code that does the conversion. 
1191          Let me know.
1192        2) the toolbox tbx does not exist anymore. We now have a library
1193           with much more data-structures but without the hash-tables (we have 
1194           dictionaries that are much faster).
1195
1196  -- Arnaud Legrand <Arnaud.Legrand@imag.fr>  Mon, 31 Jan 2005 10:45:53 -0800
1197
1198 *****************************************************************************
1199 * Follows the old GRAS changelog. It does not follow the same syntax, but I *
1200 * don't feel like converting the oldies. (Mt)                                *
1201 *****************************************************************************
1202
1203 2005-01-31 Arnaud
1204   Version 2.90: "the long awaited one"
1205   - Finished rewriting and debugging MSG. Rewrote the documentation.
1206   - disable GRAS for now since it needs to be ported to the newest SG
1207
1208 2004-12-16 Martin
1209   - Finish the port to windows (using mingw32 for cross-compile)
1210
1211 2004-11-28 Arnaud
1212   - Main loop and datastructures of SURF. A cpu resource object is
1213     functional. Surf can thus be used to create cpu's with variable
1214     performance on which you can execute some actions.
1215         
1216 2004-11-15 Martin Quinson
1217   - Port to ARM. Simply added the alignment and size descriptions. Should
1218     work, but the ARM machines are so slow that I didn't had the opportunity
1219     to 'make check' over there yet.
1220
1221 2004-11-15 Arnaud Legrand
1222   - Trace manager now written. It uses a heap structure and is therefore
1223     expected to be efficient. It may however be speeded up (particularly
1224     when many events occur at the same date) by using red and black
1225     trees. One day maybe... 
1226   - Max-min linear system solver written. It uses a sparse matrix
1227     structure taking advantage of its expected use. Most operations are
1228     O(1) and free/calloc are called as few as possible. The computation of
1229     the minimum could however be improved by using a red and black tree
1230     (again ! ;).
1231
1232 2004-11-03 Arnaud Legrand
1233   - Rename every gras_* function that was in xbt/ to its xbt_
1234     counterpart.
1235   - Add a heap and a doubly-linked list to xbt
1236   - Added a dichotomy to the dictionaries. make check works as well before
1237     so I assume that the patch is correct. I do not know however if things
1238     run effectively faster than before now. :)
1239
1240   Inclusion of the SimGrid tree in the GRAS one. The archive is renamed to
1241   SimGrid, and the version number is bumped to 2.x
1242
1243 2004-10-29 Martin Quinson
1244   - Introduction of the remote errors. 
1245     They are the result of a RMI/RPC on the remote machine.
1246     ErrCodes being scalar values, you can't get the host on which those
1247     errors did happen. Extending the error mechanism as in Gnome is possible.
1248     No idea yet whether it is a good idea.
1249     
1250 2004-10-28 Martin Quinson
1251   - Interface revolution: the Starred Structure Eradication.
1252     I used to do typedef struct {} toto_t; and then handle *toto_t.
1253     Arnaud (and Oli) didn't like it, and I surrendered. Now, you have:
1254       - ???_t is a valid type (builded with typedef)
1255       - s_toto_t is a structure (access to fields with .)
1256       - s_toto   is a structure needing 'struct' keyword to be used
1257       - e_toto_t is an enum
1258       -   toto_t is an 'object' (struct*)
1259     Exemple:
1260       typedef struct s_toto {} s_toto_t, *toto_t;
1261       typedef enum {} e_toto_t;
1262     Moreover, only toto_t (and e_toto_t) are public. The rest (mainly
1263      s_toto_t) is private.
1264     
1265   - While I was at it, all gras_<obj>_free() functions want a gras_<obj>_t*
1266     so that it can set the variable to NULL. It was so for dicts and sets,
1267     it changed for dynars.
1268     
1269   - Fix a bunch of memleaks in dict_remove
1270   - Fix a bug in sg/server_socket opening: it failed all the time.
1271
1272 2004-10-07 Martin Quinson
1273   - Speed up dynar lookup operation a bit.
1274   
1275     gras_dynar_get is dead. 
1276     
1277     Now, you can choose between gras_dynar_get_cpy (the old gras_dynar_get
1278     but should be avoided for efficiency reasons) and gras_dynar_get_ptr
1279     (which gives you the address of the stored data).
1280     
1281     gras_dynar_get_as is an helpful macro which allows you to retrieve a
1282     copy of the data using an affectation to do the job and not a memcpy.
1283     
1284     int toto = gras_dynar_get_as(dyn,0,int); rewrites itself to
1285     int toto = *(int*)gras_dynar_get_ptr(dyn,0);
1286     
1287     It does not really speedup the dynar test because they are
1288     setting elements all the time (and look them seldom). But the dict does
1289     far more lookup than setting.
1290
1291     So, this brings the dict_crash test from ~33s to ~25s (200000 elms).
1292
1293 2004-10-05 Martin Quinson
1294   - Allow to (en/dis)able the cycle detection at run time.
1295   
1296     Whether we should check for cycle or not is now a property of each
1297     datatype. When you think there may be some cycle, use datadesc_cycle_set.
1298     datadesc_cycle_unset allow to remove this property when previously set.
1299     
1300     Note that the cycle detection is off by default since it impacts the 
1301     performance. Watch the data you feed GRAS with ;)
1302     
1303     This property is hereditary. Any element embedded in a structure having it
1304     set have it set for the time of this data exchange.
1305     
1306     You should set it both on sender and receiver side. If you don't set it on
1307     sender side, it will enter an endless loop. If you forget on receiver
1308     side, the cycles won't be recreated after communication.
1309     
1310   - Header reorganization.
1311     Kill gras_private.h, each submodule must load the headers it needs.
1312
1313 2004-10-04 Martin Quinson
1314   - Interface revolution: do not try to survive to malloc failure.
1315   
1316     Now, gras_malloc and friends call gras_abort() on failure.
1317     As a conclusion, malloc_error is not a valid error anymore, and all
1318       functions for which it was the only gras_error_t return value are
1319       changed. They now return void, or there result directly. 
1320     This simplify the API a lot.
1321
1322 2004-09-29 Martin Quinson
1323   - Re-enable raw sockets.
1324     Created by gras_socket_{client,server}_ext;
1325     Used with gras_raw_{send,recv}
1326     No select possible.
1327     
1328     It should allow to kill the last bits of gras first version soon.
1329   
1330     This is not completely satisfactory yet (duplicate code with
1331      chunk_{send,recv}; a bit out of the plugin mechanism), but it should
1332      work. 
1333
1334   - Simplify transport plugin (internal) interface by not passing any
1335     argument to _server and _client, but embedding them in the socket
1336     struct directly. 
1337
1338 2004-09-28 Martin Quinson
1339   - Finish the port to AIX.
1340     autoconf was my problem (segfault within the malloc replacement
1341     function. No idea why)
1342         
1343 2004-09-16 Martin Quinson
1344   - Fix some size_t madness on 64bit architectures.
1345   
1346 2004-09-08 Martin Quinson
1347   - Reduce the number of system headers loaded, overload some more system
1348     calls (such as malloc to cast the result of the system one, and work
1349     properly on AIX)
1350   - Fix and reintroduce the config support
1351
1352 2004-09-07 Martin Quinson
1353   - Source code reorganization to allow Arnaud to surf all over there.
1354   - Allow to document the logging categories.
1355   - Remove all uppercase from logging categories and useless cleanup in names.
1356
1357 2004-08-18 Martin Quinson
1358   Version 0.6.2 (protocol not changed; API changed)
1359   - Interface cleanup: gras_msgtype_by_name returns the type (instead of a
1360      gras_error_t), and NULL when not found. Functions expecting a msgtype
1361      as argument (msg_wait; msg_send) deal with NULL argument by providing a
1362      hopefully usefull message.
1363   - Portability to prehistoric sparcs again
1364
1365 2004-08-17 Martin Quinson
1366   Version 0.6.1 (protocol not changed; ABI not changed)
1367   - prealloc some buffers to speed things up
1368
1369 2004-08-11 Martin Quinson
1370   Version 0.6 (protocol not changed; ABI expended)
1371   - The parsing macro can deal with the references, provided that you add
1372     the relevant annotations (using GRAS_ANNOTE(size,field_name))
1373
1374 2004-08-09 Martin Quinson
1375   Version 0.5 (protocol not changed; ABI changed)
1376   - Allow to off turn the cycle detection code in data exchange at
1377     compilation time. It should be at run time, but I'm short of time (and
1378     the config stuff is still broken). That way, we keep dict out of the
1379     critical path, which is good because the performance is poor:
1380      - search not dichotomial yet
1381      - dynar give no way to access their content and memcpy everytime
1382   - In composed data description (struct, ref and so on), stop foolness of
1383     keeping the subtype's ID, but store the type itself. This keeps sets out
1384     of the critical path, which is good since they rely on dynar and
1385     dictionnaries. The only loose of that is that we cannot detect the
1386     redeclaration of a structure/union with another content (but I'm not sure 
1387     the code detected well this error before anyway). We still can detect
1388     the redefinition discrepancy for the other types.
1389   - Use a whole bunch of optimisation flags (plus -fno-strict-aliasing since
1390     it breaks the code because of type-punning used all over the place).
1391     This breaks on all non-gcc architectures (for now).
1392     
1393   All those changes (plus the buffer of last time) allow me to gain 2 order
1394   of magnitude on cruel tests consisting of 800000 array of integers on two
1395   level of a hierarchical structure (200 secondes -> 4 secondes)
1396   
1397   API change:
1398     - the selector of reference must now return the type it points to, not
1399       the ID of this type.
1400
1401 2004-08-06 Martin Quinson
1402   Version 0.4 (protocol changed; ABI not changed)
1403   - Allow to pass --gras-log argument to processes in simulation mode. Really.
1404   - New debugging level: trace (under debug) to see effect of GRAS_IN/OUT
1405   - Implement a buffer transport, and use it by default (it relies on tcp in
1406      real life and on sg in simulation).
1407     That's a bit hackish since I had a new field to the structure to store
1408      its data without interfering with the subtype ones. Inheritance
1409      is tricky in C. And that's a kind of reverse inheritance with one class
1410      derivating two classes. Or maybe a game with java interfaces. Anyway,
1411      that's damn hard in C (at least).
1412     Moreover, I got tired while trying to ensure plugin separation and
1413      genericity in SG mode. MSG wants me to do weird things, so let's go for
1414      cruel hacks (temporarily of course ;).
1415      See comment in transport_private.h:71
1416   - do not include all the _interface headers in private but in the files
1417     which really need them (to cut the compilation time when they are
1418     modified) 
1419
1420 2004-07-26 Martin Quinson
1421   Version 0.3 (protocol not changed; ABI changed)
1422   - Major overhault of the datadesc interface to simplify it:
1423     - shorted the function names:
1424       s/gras_datadesc_declare_struct/gras_datadesc_struct/ and so on
1425     - add a trivial way to push/pop integers into the cbps without malloc.
1426       This allows to make really generic sub_type description, which simply
1427         pop their size of the stack.
1428     - add a function gras_datadesc_ref_pop_arr() which does what users want
1429       most of the time: Declare a dynamic array (which pops its size of the
1430       stack) and declare a reference to it. Poor name, but anyway.
1431     - kill the post-send callback, add a post-receive one
1432     
1433 2004-07-23 Martin Quinson
1434   Version 0.2 (protocol changed; ABI changed)
1435   - add some testing for cpbs in the test cases, and fix some more bugs.
1436     This invalidate again the little64 data file, since I cannot regenerate
1437     it myself.
1438   - remove an awfull optimization in the logging stuff, allowing me to:
1439     - understand it again
1440     - learn gcc how to check that the argument match the provided format
1441     - fix all errors revealed by gcc after that
1442   - internal keys of dict are not \0 terminated. Deal with it properly in
1443     loggings instead of segfaulting when the user want to see the logs :-/
1444
1445 2004-07-22 Martin Quinson
1446   - Fix some stupid bug preventing cbps (callback postit) from working
1447
1448 2004-07-21 Martin Quinson
1449   - Some documentation cleanups
1450   - remove the useless last argument of msgtype_declare
1451   - rename the Virtu functions to fit into the 'os' namespace
1452   - move headers src/include -> src/include/gras/ and stop fooling with 
1453     gras -> . symbolic link
1454   - make distcheck is now successful
1455
1456 2004-07-19 Martin Quinson
1457   Version 0.1.1
1458   - Build shared library also
1459   - Install html doc to the right location
1460   - stop removing maintainer files in make clean
1461   - build tests only on make check
1462   
1463 2004-07-13 Martin Quinson
1464   version 0.1
1465   - No major issue in previous version => change versionning schema
1466   - Re-enable little64 convertion test now that Abdou kindly regenerated the
1467     corresponding dataset.
1468   
1469 2004-07-11 Martin Quinson
1470   version 0.0.4
1471   - Get it working with any kind of structure (we can compute the padding
1472     bytes remotely for all the architectures I have access to)
1473   - Implement the structure parsing macro (still not quite robust/complete)
1474   - Improvement to the remote testing toysuite
1475   
1476 2004-07-10 Martin Quinson
1477  [autoconf mechanism]
1478   - get ride of a bunch of deprecated macros
1479   - actually run the test for two-compliment, not only compile it :-/
1480   - test whether the structures get packed (and bail out if yes. Damn.
1481     Alignment is a serious matter)
1482   - test whether the structures get compacted (but respecting the alignment
1483     constraints of each types)
1484   - test whether the array fields of structures can straddle alignment boundaries
1485  [base]
1486   - Damnit, double are bigger than float (typo in creation of 'double' datadesc)
1487     (took me 2 hours to find that bug, looking at the wrong place)
1488   - Add gras_datadesc_declare_{union,struct}_close(). They must be used
1489     before sending/receiving and are used to compute the offsets of fields
1490   - Given that padding size depend even on compiler options, keep track of
1491     alignment and aligned_size only for the current architecture. Not a big
1492     deal since we send structure fields one after the other (seems
1493     reasonable).    
1494   - Add the datastructure used for IEEE paper by the PBIO guys to the test
1495     program, let it work on linux/gcc/little32. portability todo.
1496
1497 2004-07-08 Martin Quinson
1498   - import and improve remote compilation support from FAST
1499   - make sure make check works on half a dozen of machines out there
1500
1501 2004-07-07 Martin Quinson
1502  Let's say it's version 0.0.3 ;)
1503   - Implement conversions (yuhu!)
1504   - Let it work on solaris (beside conversion, of course)
1505   - Stupid me, using rand() to generate the conversion datatests in not wise.
1506
1507 2004-07-06 Martin Quinson
1508   - Let make dist work, since I'm gonna need it to compile on remote hosts
1509   - Let Tests/datadesc_usage write the architecture on which the file was
1510     generated as first byte.
1511   - Add PowerPC (being also IRIX64), SPARC (also power4) and ALPHA
1512     architecture descriptions. 
1513   - Add datadesc_usage.{i386,ppc,sparc} files being the result of execution
1514     on those architectures.
1515   - Optimization: send/recv array of scalar in one shoot
1516
1517 2004-07-05 Martin Quinson
1518   - YEAH! GRAS/SG and GRAS/RL are both able to run the ping example !
1519   
1520   - Plug a whole bunch of memleaks
1521   - each process now have to call gras_{init,exit}. One day, their log
1522     settings will be separated
1523   - Continue the code factorisation between SG, RL and common in Transport.
1524
1525 2004-07-04 Martin Quinson
1526  [Transport]
1527   - Redistribution between SG and RL. 
1528     We wanna have to accept in SG, so move accepted related parts of RL in
1529     the common part. (more precisely, the dynar of all known sockets is no
1530     more a static in transport.c, but part of the process_data)
1531  [Core/module.c] 
1532  [gras_stub_generator]
1533   - Bug fix: Do call gras_process_init from gras_init (wasnt called in RL).
1534
1535 2004-07-03 Martin Quinson
1536   - Create a new log channel tbx containing dict, set, log, dynar (to shut
1537     them all up in one shot)
1538  [DataDesc]
1539   - Fix the ugly case of reference to dynamic array.
1540   - New (semi-public) function gras_datadesc_size to allow the messaging
1541     layer to malloc the needed space for the buffer.
1542  [Transport]
1543   - gras_socket_close now expect the socket to close (and not its address to
1544     put NULL in it after it). This is because the socket passed to handlers
1545     is one of their argument (=> not writable).
1546  [Messaging]
1547   - propagate the interface cleanup from last week in datadesc, ie remove a
1548     superfluous level of indirection. User pass adress of variable
1549     containing data (both when sending and receiving), and not of a variable
1550     being a pointer to the data. Let's say that I like it better ;)
1551       The price for that is constructs like "int msg=*(int*)payload" in
1552     handlers, but it's a fine price, IMHO.
1553  [examples/ping]
1554   - Let it work in RL (yuhu)
1555
1556 2004-06-21 Martin Quinson
1557  [Transport]
1558    - porting SG plugin and SG select to new standards (works almost).
1559    - plug memleaks and fix bugs around.
1560    
1561  [DataDesc] 
1562    - cleanup the prototype of data recv and force users to specify when they 
1563      want to handle references to objects. Test case working even for cycles.
1564    - plug memleaks. Valgrind is perfectly ok with this.
1565
1566 2004-06-12 Martin Quinson
1567  [Transport] 
1568    - cleanup the separation between plugin and main code in plugin creation 
1569
1570 2004-06-11 Martin Quinson
1571  [Transport]
1572    - Reput hook for raw sockets, needed for BW experiments
1573    - kill a few lines of dead code
1574  [Data description] Interface cleanup
1575    - gras_datadesc_by_name returns the searched type or NULL.
1576      That way, no variable is needed to use a type desc once, which makes
1577       the code clearer.
1578    - gras_datadesc_declare_[struct|union]_append_name is removed. The last
1579       two parameters were strings (field name, type name), leading to
1580       common errors.
1581  [Dicos] Interface cleanup
1582    - gras_dico_retrieve -> gras_dico_get ; gras_dico_insert -> gras_dico_set 
1583      This is consistant with the dynar API.
1584
1585 2004-04-21 Martin Quinson
1586  [Messaging]
1587    - Porting to new standards.
1588  [Data description]
1589    - interface cleanup. 
1590      There is no bag anymore, no need to take extra provision to mask the
1591        pointers behind "ID". 
1592      Better splitup of functions between files create/exchange/convert.
1593        This is still a bit artificial since convert and receive are so
1594        interleaved, but anyway.
1595  [Virtu(process)]
1596    - add a queued message list to procdata (the ones not matching criteria
1597      in msg_wait)
1598    - factorize some more code between SG and RL wrt procdata
1599  [Tests]
1600    - use gras_exit in example to track memleaks
1601    - get rid of gs_example now that GS is properly integrated into gras
1602    - update run_test to integrate the lastest tests (datadesc)
1603  [Logging]
1604    - rename WARNINGn macros to WARNn since it prooved error-prone
1605      
1606 2004-04-19 Martin Quinson
1607  [Data description]
1608    - register init/exit functions within gras module mechanism   
1609    - send/receive function. 
1610    Convertion is not implemented, but short-cutted if not needed.
1611    struct/array elements are sent one by one (instead of block-wise), but
1612      nobody really cares (yet). Get a prototype before optimizing.
1613    - tests (using a file socket) for DD send/receive on:
1614      - base types: int, float
1615      - array: fixed size, string (ie ref to dynamic string)
1616      - structure: homogeneous, heterogeneous
1617      - chained list, graph with cycle
1618    Believe it or not, valgrind is not too unhappy with the results. The
1619     cycle happily segfaults, but the others are ok. And I'm sick of pointers
1620     for now.
1621  [Transport]
1622    [File plugin] 
1623      - Bugfix when using a filename explicitely (instead of '-')
1624
1625 2004-04-09 Martin Quinson
1626  [Transport plugins]
1627    - factorize more code between RL and SG in socket creation
1628    - Complete the implementation and tests of:
1629      o TCP
1630      o file (only in RL, and mainly for debugging)
1631      
1632      I lost 3 days to design a portable address resolver, and then decided
1633        that the prototype mainly have to run on my box.
1634      Addressing portability too early may be like optimizing too early :-/
1635  [Tests]
1636    - use gras_init in the Tests instead of the crappy parse_log_opt 
1637      (the latter function is removed)
1638  [Conditional execution]
1639    - New functions: gras_if_RL/gras_if_SG (basic support for this)
1640  [Code reorganisation]
1641   - Get rid of libgrasutils.a since it makes more trouble than it solves.
1642     Build examples against the RL library, since there is no way to disable
1643     its creation for now.
1644
1645 For information, the beginning of coding on GRAS was back in june
1646 2003. I guess that every line has been rewritten at least twice since
1647 then.