Logo AND Algorithmique Numérique Distribuée

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