Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] call functions that do the simix processes category registration directly
[simgrid.git] / ChangeLog
index e69de29..a393f84 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+SimGrid (3.6) unstable; urgency=low
+
+ SURF
+ * New model for multi-core CPUs. You can now use the core attribute to
+   precise the number of cores of a host. This is a basic model. Every
+   process running on the host receive at most the power provided in
+   the DTD (throughput<=power). Total throughput of process cannot exceed
+   power * num_cores.
+ * New peer tag. This peer tag creates a tiny AS comprising a host and a
+   router linked by an up-link and a down-link (possibly asymmetrical).
+   This kind of pattern allows to easily build last-mile model style platforms.
+   Aggregating such patterns in a rule-based AS is thus the technique of
+   choice for modeling large peer-to-peer/volunteer computing/cloud platforms.
+ * New model for Vivaldi routing. We transformed the Vivaldi network model
+   into a Vivaldi routing model (based on the rule-based model). This allows to
+   combine Vivaldi based latencies with last-mile platforms.
+
+ Simix
+ * Completely rewrote this module to allow parallel execution.
+
+ XBT
+ * Add a new function xbt_dynar_to_array that transforms a dynar into a
+   NULL-terminated array. This may solve backward compatibility issues
+   due to the change to return type of SD_Simulate. See also:
+   http://lists.gforge.inria.fr/pipermail/simgrid-user/2010-December/002206.html
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+
+SimGrid (3.5) stable; urgency=medium
+
+ Model Checking
+ * New feature to any SimGrid-based simulator: Model-Checking
+   Check SIN#1 for more details.
+
+ SMPI
+ * New Model SMPI (three-interval linear regression for correction factors)
+   See RR-7426, available at http://hal.inria.fr/inria-00527150
+ * Ability to use FORTRAN MPI code (through f2c, automatically privatized)
+ * New MPI functions supported: MPI_Get_count(), MPI_Comm_split()
+ * New: RAM folding (see RR-7426 and examples/smpi/NAS/DT-folding)
+ * New: execution sampling (see RR-7426 and examples/smpi/NAS/EP-sampling)
+ * See also src/smpi/README
+
+ Tracing:
+ Tracing:
+ * Tracing system
+   - Tracing API changes: TRACE_start and TRACE_end should not be called
+     by user-code. They are automatically called by simulators created
+     with SimDAG, MSG and SMPI if the toolkit is compiled with
+     tracing_enabled=ON. Categories declaration and utilization remain the
+     same for MSG and SimDag.
+   - A function was added to the tracing API to declare categories with
+     colors:
+        - TRACE_category_with_color (char *category, char *color)
+                where color must be in the following format
+                    "%f %f %f", red, green, blue
+                and red, green, blue are float values in the interval [0, 1]
+        - User can specify NULL as color parameter, or continue calling
+            TRACE_category (cat)
+          On that case, the tracing system will define random colors
+   - The following command-line options are supported:
+        --cfg=tracing/filename:msg.trace
+        --cfg=tracing:1               (activate tracing, needed to use others)
+        --cfg=tracing/platform:1      (categorized resource use)
+        --cfg=tracing/uncategorized:1 (uncategorized resource use)
+        --cfg=tracing/msg/task:1      (task creation)
+        --cfg=tracing/msg/process:1   (process creation, migration)
+        --cfg=tracing/msg/volume:1    (volume of MSG send/recv)
+        --cfg=tracing/smpi:1          (SMPI interface tracing)
+        --cfg=tracing/simdag:1        (allow SimDAG tasks receive categories)
+   - examples of examples/msg/tracing updated
+ * Tracing SimDag
+   - DAXLoader and DOTLoader functions can generate tasks with categories
+   - A new function to attribute a category to SD tasks:
+        TRACE_sd_set_task_category (SD_task_t task, char *category)
+ * Tracing the MPI interface implemented by SMPI
+   - Collective operations are traced with states
+   - Point-to-Point operations are traced with states/links
+   - Tracing activated by a parameter "-trace filename" passed
+     to smpirun during execution (considering that simgrid
+     is compiled with tracing enabled)
+   - To run the simulation with gdb, the simulator
+     accepts --cfg=tracing/smpi:1 to trace SMPI
+   - tesh files to check if smpi tracing is ok
+   - See examples/smpi/NAS/DT-trace
+ * GTNetS tracing re-worked
+   - adaptation to the tracing system of GTNets to cope
+     with modifications regarding the fullduplex mode
+   - new tesh files to check if gtnets tracing is ok
+
+ MSG
+ * Asynchronous communications through the functions:
+   MSG_task_isend/irecv and MSG_comm_test/wait/waitall
+ * New function: MSG_load_platform_script()
+   to make possible using a lua script instead of XML files to set up platforms
+ * New function: MSG_set_function
+   to associate functions to processes, used when bypassing the parser
+ * New functions: MSG_task_set_name(), MSG_task_set_compute_duration()
+
+ Platforms: Add some more examples in examples/platforms
+ * Grid'5000: see www.grid5000.fr
+ * *_30000_hosts.xml: various huge files [mainly scalability testing]
+
+ SURF
+ * Change the XML format. This is a very important modification. SimGrid
+   3.5 introduces a new hierarchical format based on the notion of
+   Autonomous Systems. Compatibility with old format is ensured
+   through the perl script provided in the install bin directory
+   bin/simgrid_update_xml.
+   It is now possible to build platforms with specific routing
+   mechanism (Full/Dijkstra/DijkstraCache/Floyd) and to easily
+   connect several platforms together. We will try to provide soon
+   set of realistic platforms exploiting these properties (have a
+   look at examples/platforms/ for the moment).
+ * Take the opportunity of the XML format change to be a good XML citizen:
+   rename link:ctn to link_ctn and similar changes (also dealed with by
+   simgrid_update_xml)
+ * Add a new routing scheme (rule-based) using regular expressions. It
+   enables to have an extremely low memory footprint when the
+   underlying routing is simple and can be compactly described. You
+   need to have libpcre4-dev (perl regular expressions) installed if
+   you want to use this routing scheme.
+ * Revive the cluster TAG and allow to easily and efficiently (both in
+   term of memory and speed) connect clusters together. Have a look
+   at teshsuite/simdag/platforms/ to see how this can be done. With
+   this tag, you can create clusters with thousands of tasks at no
+   cost (have a look at examples/platforms/).
+   Note: clusters are implemented as ASes, so there is no need for an
+   enclosing AS tag if you have only one cluster in your platform.
+ * Add new generic functions in the public interface that allows the user
+   to call SURF 'create_resource' methods from your code (same
+   functionality as the XML bypass mechanism but with a much lighter
+   burden).
+ * Add a new model (enabled through command line --cfg=network/model:SMPI)
+   that uses a piecewise linear approximation to produce better
+   results when exchanging small messages.
+ * Add a new parameter to handle correctly full duplex link and account
+   for interferences between uplink and downlink communications
+   (activate with --cfg=fullduplex:1).
+
+ SIMDAG
+ * Rename the SD_READY (all dependencies are satisfied and task is
+   scheduled) state in SD_RUNNABLE and define a new SD_SCHEDULABLE (all
+   dependencies are satisfied) state.
+   This prevents a confusion between the notion of "ready to schedule"
+   (SD_SCHEDULABLE) used in DAG scheduling and that of "ready to be
+   simulated" (SD_RUNNABLE) used by the simulation kernel.
+ * Change the way a task is considered as ready. Instead of removing
+   dependencies when a task is done, a counter is decreased. This way,
+   it is always possible to reach ancestors thanks to the
+   SD_taks_get_parents function (even after the end of the simulation.)
+ * Change the return type of SD_Simulate from (SD_task_t*) into
+   xbt_dynar_t. This function was in handling a dynar internally and
+   converted it into a NULL terminated array for historical reasons.
+ * New function SD_dotload(char*) to load a DAG described in dot
+   format. This loader and the corresponding examples require the
+   installation of the graphviz library.
+ * Fix a bug in the management of tasks of size 0 in the surf network
+   models. This problem was only visible with SIMDAG and you should
+   thus disregard results produced with earlier versions if you
+   relied on this feature (some tasks were blocked because of this).
+ * Fix a bunch of stuff that prevented to use classical models with SIMDAG
+   even though your applications were doing only point-to-point
+   communications and sequential computations. Now you can really use any
+   model you want (of course, if you create real parallel tasks, which are
+   not implemented in most models beside ptaskL07, this will abort).
+ * Add an example that schedules a DAX on an heterogeneous platform
+   using a Min-Min strategy.
+ * New function SD_workstation_get_current_task() that returns the kind
+   of task currently running on a workstation in the sequential access
+   mode.
+ * Raise some warnings when unexecuted tasks remains at the end of the
+   simulation. This is usually caused by cycles in the DAG.
+
+ SIMIX
+ * New function: SIMIX_process_set_function() called by MSG_set_function
+ * Change the underlying waiting queue in semaphores so that a process
+   can wait on several of them simultaneously (as in waitany).
+ * Fix the way to handle tokens in semaphores so that all access patterns
+   work: {acquire, acquire_timeout, waitany} / {release, release_forever}.
+ * kill the dirty pimple SIMIX_message_sizes_output()
+   Please use (proper) visualization instead
+
+ XBT
+ * New data container: setset (set of sets of elements)
+ * New module: mmalloc (mapped malloc, allowing to have several
+   independent segments of malloc)
+ * New function: xbt_dict_cursor_set_data()
+ * New functions: xbt_dynar_sort(), xbt_dynar_compare()
+ * New function: xbt_dynar_is_empty()
+ * New function: xbt_fifo_get_last_item()
+ * Fix xbt_dynar_shrink(): use the right element size.
+ * Fix xbt_dynar_set*(): allow index larger than current size and memset 0
+   uninitialized areas during expand.
+ * Fix semaphores: previous implementation was severely broken.
+ * Use library init/fini functions for our initialization.
+   - you can use logs and other feature as soon as you want in your
+     code (even before the xbt_init / MSG_init)
+   - xbt_exit is now a no-op and produce a warning when used.
+
+ GRAS:
+ * Port GRAS to new SIMIX mechanisms. This allows gras users to
+   benefit from the latest improvement to the simulation kernel.
+ * Kill measurement sockets for now. If you rely on them, sorry. This
+   release is not for you. This feature will be reintroduced in the
+   future, but we cannot delay the release any further.
+ * New function: gras_msgtype_get_name().
+ * Implement gras_agent_spawn in RL too (the prototype changed a bit)
+ * Fix (at last) the pmm example: it should not randomly fail anymore.
+
+ Build chain: bug fixes and overall polishing
+ * Cmake is now stable enough. Hence, we killed the autotools.
+ * Port to windows ( TM :)
+ * Fix the 'make install' target.
+   No need to use 'make install-simgrid' anymore
+ * Introduce a 'make dist' target compiling a *source* archive
+   'make package' compiles a binary archive
+ * Compile java files only on need
+ * Add --cd and --setenv command line options to tesh
+ * Out of source builds are not fully supported yet, but we are close
+ * Enable supernovae and optimization flags by default for our users
+
+ LUA Bindings
+ * Add layer to set up environment directly from lua, without XML.
+ * The effect of gras_stub_generator can be achieved through
+   lua too (check examples/gras/console/ping_generator.lua)
+
+ -- Wed, 01 Dec 2010 22:09:23 +0100 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+
+SimGrid (3.4.1) stable; urgency=low
+
+ The "Polishing easter eggs is probably a good idea" release.
+ This is a bug fixes release only.
+
+
+ Java Bindings
+ * Fix a bug preventing the tasks from begin garbage collected.
+
+ MSG
+ * Fix a bug occuring when a host involved in a communication fails.
+   This was not detected properly by the other peer involved in the
+   communication. Now, it's reported as a network error.
+
+ SimDag
+ * Warn the user about loop dependencies in data flow of DAX files
+ * Obey the control-flow dependencies of DAX files
+
+ Cmake
+ * Add option "enable_smpi" allowing to not compile SMPI.
+   Probably useful for the (Mac) users experiencing a build error here
+ * Improve the detection of lua5.1 and ruby1.8
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Tus, 04 May 2010 28 16:11:16 +0100
+
+SimGrid (3.4) stable; urgency=low
+
+ The "Easter in Cargese" release. Also known as (major changes):
+
+  * the "se habla Java, Ruby 話せます, fala-se Lua (and deaf-friendly)"
+    ~> bindings were greatly improved
+    ~> new tracing infrastructure for better visualization introduced
+
+  * the "Welcome to configury modernity" release.
+    ~> we switched from autotools to cmake, and improved our cdash
+
+
+ A more detailled list of changes follow (full detail in svn log).
+
+ Java Bindings: Various Cleanups
+  * (install java-gcj-compat-dev on debian-like to use them)
+  * Remove put/get: no need to export deprecated interface in Java
+    Use send/receive instead.
+  * Cleanup the examples and add a README per directory
+  * Remove example autoDestination (that's the only way to go now)
+  * Remove example explicitDestination (was a plain copy of basic)
+  * Make JniException a runtime exception, so that there is no need to
+    declare the fact that you may encounter such a beast. I guess that
+    nobody will ever want to survive such error.
+  * Create specific errors for each MSG case of failure:
+    host failure, transfer failure, timeout, task cancelled
+  * Cleanup the exceptions that may get thrown by each function
+  * Other internal cleanups in Java bindings. Performance still bad :/
+ Ruby and Lua Bindings: create them
+  * (install ruby1.8-dev/liblua5.1-0-dev on debian-like to use them)
+  * That's new and great, you should try them out.
+    Same functionalities than Java bindings, only even less polished
+ SimDag:
+  * Kill the useless "rate" argument of SD_task_get_execution_time()
+    Everyone used to provide -1 as a value, it was not used, and the
+    semantic of a possible use wasn't even clear.
+  * SD_SCHED_NO_COST: Constant to use as cost in SD_task_schedule()
+    either as comm costs or compute costs to mean that there is no
+    such thing for that specific task.
+  * Add a SD_task_set_name() function
+  * Fix SD_task_unschedule() on typed tasks
+  * Fix SD_task_get_execution_time() to return seconds, not flop*sec
+  * In DAX loader, accept useless 'level' attributes to <job> since
+    LIGO DAGs have them (seem to be to ease graphical representation).
+ MSG:
+  * Add an example masterslave_mailbox.c using send/receive and not
+    the deprecated put/get interface.
+  * Kill the MSG_paje_output() function. It's a noop since 2 years.
+  * Kill MSG_WARNING and MSG_FATAL return codes: they were not used
+    anywere in source.
+  * Rename MSG_TIMEOUT_FAILURE into MSG_TIMEOUT for sake of logic
+    (declare MSG_USE_DEPRECATED to still have the old name)
+  * Add a MSG_task_set_data() function
+  * About trace replay (see examples/msg/actions):
+    - implement barrier
+    - Allow to work with splitted trace files for each process
+      Give the specific trace file as argument of each process,
+        and call MSG_action_trace_run(NULL)
+      You can still have one merged file for all processes.
+    - Fix implementation of collective operations
+  * Allow task_execute() on 0-sized tasks (closes #10063)
+ SMPI:
+  * This is the first release of SimGrid where SMPI is not considered
+    beta anymore (even if some corners should still be improved)
+  * Port over the new SIMIX_network submodule (internal refactoring)
+  * Basic support to log events as with SMPE (use --cfg=SMPE:1)
+  * Implement more missing elements of the standard:
+    - MPI_COMM_SELF
+    - MPI_MAXLOC MPI_MINLOC + all associated datatype MPI_DOUBLE_INT,
+      MPI_FLOAT_INT, etc.
+    - MPI_Address() MPI_Get_count() MPI_Type_free() MPI_Type_extent()
+      MPI_Scan() MPI_Get_processor_name()
+    - Added implementation of missing case for Alltoall (warning: it's
+      *not* the bruck variant from OpenMPI; based on Alltoallv instead)
+    - SMPI_MPI_Gather() SMPI_MPI_Gatherv() SMPI_MPI_Scatterv()
+      SMPI_MPI_Reduce_scatter() SMPI_MPI_Allgather()
+      SMPI_MPI_Allgatherv()
+  * Bug fixes include:
+    - MPI_Waitsome() was broken
+    - Allow relative includes in smpicc
+    - Command line cfg argument 'reference_speed' was ignored...
+    - Some functions did not properly lead to auto-benching of user code
+    - smpicc passes -O2 by default (just like openmpi one)
+ SIMIX:
+  * add SIMIX_action_suspend() and SIMIX_action_resume() functions
+  * Bug fixes about timeouts during communications
+  * add SIMIX_message_sizes_output() as a pimple to write to file the
+    amount of messages per size. Use gnuplot to get histogram.
+    Pimple because that's the only user-visible function of simix,
+     defined directly in xbt.h (irk, sorry)
+  * About semaphores:
+     - Add a SIMIX_sem_get_capacity() function
+     - Fix interactions with processe resume/suspende
+     - release_forever() was stupidly broken
+     - Fix SIMIX_display_process_status() for processes in a semaphore
+     - Make SIMIX_sem_block_onto() user-visible
+  * Refactoring context stuff:
+    - Use pseudo-OOP for better modularity
+    - reimplement SIMIX_process_kill() without process_schedule() so
+      that the latter can take as invariant that it is called from
+      maestro.
+    - Merge context_start into context_new for sake of simplicity
+ SURF:
+  * Add a Vivaldi network model, coded live during SUD'10 ;)
+  * Rename configuration variables to start a hierarchy:
+    o cpu_model -> cpu/model
+    o network_model -> network/model
+    o workstation_model -> workstation/model
+  * New configuration variables:
+    o network/bandwidth_factor: correction to bandwith
+    o network/latency_factor: correction to latency
+    o netwotk/weight_S: correction to the weight of competing streams
+  * Add a long description to the models, that users can see with such
+    argument on the command line: --cfg=cpu/model:help
+  * --help-models display the long description of all known models
+ XBT:
+  * config: add the ability to set a default value after registration
+    Does not override any previously set value (e.g. from cmd line)
+  * dict: allow to have integer key and data.
+    When so, you need to use the following functions
+     void xbt_dicti_set(xbt_dict_t dict, uintptr_t key, uintptr_t data);
+     uintptr_t xbt_dicti_get(xbt_dict_t dict, uintptr_t key);
+     void xbt_dicti_remove(xbt_dict_t dict, uintptr_t key);
+    In contrary to regular dicts, the key is not malloced before copy.
+    Mixing scalar and regular elements in the same dict is not tested
+      (but may work).
+  * Allow to use xbt_dynar_shrink() to expend the dynar instead
+ Tracing for Visualization:
+  * SimGrid is now instrumented in order to generate a trace file for
+    visualization analysis: to use it, need to compile SimGrid with the
+    "tracing" option enabled, and instrument the program using SimGrid with
+    TRACE_start, TRACE_category, TRACE_msg_set_task_category and TRACE_end
+    (among other functions).
+  * The instrumentation only traces the platform utilization for now
+  * Documentation to use the tracing functions and how to analyze the
+    traces with the Triva tool is written.
+  * More information about: SimGrid FAQ (in the section Tracing Simulations
+    for Visualization)
+ Build system:
+  * We moved to cmake as default build system. Autotools support will
+    be dropped soon. Check the FAQ for more info about how to use it.
+  * Greatly improved our cdash/ctest interactions
+    Check http://cdash.inria.fr/CDash/index.php?project=Simgrid
+  * Added memory checking tests with valgrind; lot of memleak fixing.
+    This may be the first release of simgrid with so few memory issues
+  * Added code coverage tests.
+    Our coverage is still improvable, but at least we see it on cdash.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Wed, 28 Apr 2010 28 17:11:16 +0100
+
+SimGrid (3.3.4) stable; urgency=low
+
+ The "Desktop Grid needs love too" release (also called Xmas release).
+
+ Models improvements:
+ * Major speedup in the maxmin system solving by using lazy evaluation
+   Instead of solving completely the maxmin system at each iteration,
+     only invalidate (and recompute) the modified parts.
+   This new feature is enabled in default models but you can try to
+     turn it on with "--cfg:maxmin-selective-update=1" for other models.
+ * Cas01 IMproved as default CPU model
+   This CPU model is the same Cas01 model, but it uses the
+     maxmin-selective-update flag and a heap structure to manage
+     actions on SURF kernel.
+   It reduces the complexity to find the next action to finish and,
+     consequently, it's faster than the old Cas01.
+   This is the new default CPU model (Cas01).
+ * Rename the old Cas01 model to Cas01_fullupdate
+   Keep the old cpu model Cas01 with the new name of Cas01_fullupdate.
+   Use "--cfg=cpu_model:Cas01_fullupdate" to use the old default CPU model.
+ * CpuTI (CPU Trace Integration)
+   A new CPU model whose objective is simulate faster when using
+     availability trace files.
+   Instead of using a full featured, over engineered maxmin system for
+     CPU modeling, this model does the pre-integration of traces files
+     to calculate the amount of CPU power available, and so, executes
+     faster than the old CPU models.
+   Use "--cfg=cpu_model:CpuTI" to change to this CPU model.
+ * Use LV08 as default network model since it gives better accuracy
+    for small messages and shouldn't change things for big ones.
+   Use --cfg=network_model:CM02 to get the previous behavior.
+
+
+         ******************************************
+         *DO NOT MIX 3.3.4 RESULTS WITH OLDER ONES*
+         ******************************************
+   * The new CPU model may changes simulations!
+     The point is that events occurring at the exact same timestamp
+        are not scheduled in the same order with the old and new
+        version. This may be enough to completely change the execution
+        of simulations in some cases.
+   * The new network model will change simulations!
+     This new model is more realistic than the previous one, so you
+       should consider redoing your old experiments with this model.
+     Sorry for the inconvenience.
+
+ Build System:
+ * Introduce the supernovae compilation mode
+   When compiled that way, the whole SimGrid (or almost) is put in a
+     single compilation unit and compiled in one shoot.
+  This is to help gcc which has difficulties to inline stuff from one
+     file into another.
+  The speedup seem to be above 15%, althrough more tests are needed on
+     amd64 to confirm that gain.
+
+ MSG:
+ * Port of MSG's mailbox on top of SIMIX network
+   The put/get mechanism was greatly simplified on the way.
+
+ SIMIX:
+ * New SIMIX network module. Provides:
+   - Mailbox: rendez-vous mecanism to find with who you want to speak
+   - Synchronous send/recv: easier and hopefully faster since the
+     logic is handled in the maestro process directly now
+   - Asynchronous send/recv: you dreamt of it? It's here now
+     Too bad that nobody cared enough to propagate the change to MSG.
+ * Add semaphores as SIMIX synchronization mechanism.
+
+ SimDag:
+ * new function SD_daxload(char*) to load a DAX file
+   (see http://vtcpc.isi.edu/pegasus/index.php/WorkflowGenerator)
+ * Introduce typed tasks. Specify its kind and cost at creation.
+   At scheduling, just give where it should be placed, and the cost
+   for each involved resource is automatically computed.
+   Existing constructors so far (more to come of course):
+    - SD_task_create_comm_e2e() for end-to-end communication
+    - SD_task_create_comp_seq() for sequential computation
+   Use SD_task_schedulev() / SD_task_schedulel() to schedule them.
+ * new function SD_task_dump() for debuging display
+ * new function SD_task_dotty(task,FILE*) writing to file the info
+   about the task in dotty format
+ * SD_task_dependency_exists() can now cope with having one of its
+   arguments NULL. If so, it tests whether the other argument has any
+   dependency.
+ * Add getters on list of preceding/following tasks:
+    SD_task_get_parents(task) and SD_task_get_children(task)
+ * Add getters on amount of workstations and list:
+    SD_task_get_workstation_count(t) and SD_task_get_workstation_list(t)
+ * Add getter on task kind: SD_task_get_kind(task)
+ * Update the start_time and finish_time of tasks on completion/failure
+ * Bugfix: Remove task from state swags when destroyed
+
+ GRAS:
+ * New function: void gras_cpu_burn(double flops) -- a simple CPU burner
+
+ XBT:
+ * New function: xbt_dynar_dopar(dynar,fun) to map a function over the
+   dynar with one separate thread per value of the dynar.
+ * Change the prototype of xbt_thread_create(), sorry.
+   Added a boolean parameter indicating whether we want to join this
+   thread (used in SG only for now)
+ * Implement xbt_thread_join and xbt_thread_yield in SG also.
+
+ Bug fixes:
+ * GTNetS wrappers should now be usable again (and betterly tested too)
+ * Fix a major regression from 3.2 where the timeout provided to
+   MSG_task_put_with_timeout() was used as absolute time before which
+   the comm should be done.
+ * Start to fix the <cluster> tag.
+   - Internal links should be good now (beside of the loopback, which
+     use the private link instead)
+   - paths to the external world is still rather broken
+   - the <route:multi> tag is just broken. Actually that's brain-dead.
+     We need sth like <route:multi src="myCluster" dst="$*-${myCluster}">
+     to make it less stupid
+   ** Check your platform with teshsuite/simdag/platforms/flatifier **
+ * Fix a source-level compatibility glitch from 3.2: after defining
+   MSG_USE_DEPRECATED, you can use the old name
+   MSG_task_put_with_time_out() for MSG_task_put_with_timeout()
+ * Allow to compile from the SVN with automake 1.11
+ * Fix some problems when using the "start_time" tag in deployment XMLs.
+ * Fix #8569: XBT/synchro.h has redundant declarations
+ * Fix #8563: MSG return values and exceptions
+   Introduce a MSG_TIMEOUT_FAILURE return code and use it consistently.
+ * Integrate patch #8636: Obey DESTDIR when installing documentation.
+   Thanks to Robson Peixoto.
+ * Fix a vicious bug in dictionaries inducing that some elements were
+   not freed on xbt_dict_free()
+
+ Portability report of this version:
+  * Main portability targets:
+    - linux (ubuntu (804/810/910) /debian (4/5/testing) /fedora (core11))
+      on (amd64/i386/ia64)
+    - mac leopard on i386
+    Known problems: http://cdash.inria.fr/CDash/index.php?project=Simgrid
+     but nothing critical.
+  * Other platforms: windows, AIX and others were not tested for this release
+
+ Timing report of this version:
+  * Lazy evaluation brings arbitrary speedup (ie, speedup depending on
+    scenario parameters). From 8h to a few seconds in desktop grid settings.
+  * Supernovae brings about 25% speedup on i386.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Thu, 24 Dec 2009 19:07:39 +0100
+
+SimGrid (3.3.3) stable; urgency=low
+
+ The "Need for Speed" release.
+
+ The timings done to validate the 3.3.2 were faulty.
+ Instead of being 5% faster, it was 15% slower (compared to 3.3.1).
+
+ The problem was a conversion from a manually handled vector to
+   xbt_dynar_t on the critical path.
+ xbt_dynar_foreach calls functions, inducing stack management crap.
+
+ We inlined these functions and xbt_dynar_foreach is now breath taking.
+ We also inlined xbt_swag_belong on the way.
+
+ Here are some approximate speedup measurements (on master/slaves
+  simulations lasting between 10s and 20s each):
+   3.3.1                   -> 3.3.2: about same performance
+   3.3.2                   -> 3.3.3: 40% speedup
+   3.3.1                   -> 3.3.3: 40% speedup
+   3.3.1 with inline patch -> 3.3.3: 30% speedup
+
+ Our reading is that the refactoring which occurred in 3.3.2 made us
+  suffer much more from the xbt_dynar_foreach low performance, but
+  once we solved this, this refactoring proved to be very performance
+  effective. From the 40% speedup, somehow, 10% are due to the
+  inlining and 30% to the refactoring.
+
+ That's a pitty that gcc cannot inline functions placed in other files
+  alone. We have to choose between:
+  - break the encapsulation (by putting private data structures and
+    accessors in headers files to help gcc)
+  - live with low performance
+  - switch to a decent compiler such as icc (not quite possible).
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Thu, 20 Aug 2009 21:21:33 +0200
+
+SimGrid (3.3.2) stable; urgency=low
+
+ The "Simplicity does not preceed complexity, but follows it" release.
+
+ The main contributors of this release were (lexical order):
+   Silas De Munck, Stéphane Genaud, Martin Quinson, Cristian Rosa.
+
+ SURF:
+  * Extract the routing logic into its own object.
+    (was dupplicated in network.c and workstation_LV07.c;
+     Allows to implement other ways of storing that info)
+    => kill now useless network_card concept
+    - Use dynar to represent routes (instead of void** + int*)
+    - kill link_set (use surf_network_model->resource_set instead)
+    - Add a command-line option to choose the routing schema to use
+    - Add three new models:
+      * Floyd (shortest path computed at initialization)
+      * Dijikstra (shortest path recomputed all the time)
+      * Cached Dijikstra (shortest path computed on need)
+      All these models where contributed by Silas De Munck, and are
+      described in his ICCS09 paper.
+
+  * Simplify model declaration
+    (less redirections, less function to write when defining a model)
+    - Factorize stuff between models:
+      - model_init/exit
+      - Set of resources:
+        surf_model_resource_set(model)
+        surf_model_resource_by_name(model, name)
+    - Unify the types of models in s_surf_model_t (using an union)
+    - Embeed fields of common_public directly into s_surf_model_t
+    - Rename model methods:
+      action_free ~> action_unref
+      action_change_state ~> action_state_set
+      action_get_state    ~> action_state_get
+    - Change model methods into functions :
+      (model)->common_public->action_use  ~> surf_action_ref
+
+  * Implement a generic resource; use it as ancestor to specific ones
+    (allows to kill duplicated code in models)
+    Drawback: timer command don't need no name nor properties;
+              workstation_CLM03 don't need no properties
+    (but I guess we can live with those few bytes wasted)
+
+  * Improve the action object model
+    - implement a constructor avoiding dupplicated code about field
+      initialization in generic_action part.
+
+  * Kill the SDP model: it has an external dependency, is deprecated
+    in flavor of modern lmm models, and didn't compile since a while
+
+ SIMIX:
+  * Relocation of the context module from XBT to SIMIX.
+    (the context were decoupled from the simix processes, duplicating a lot of code)
+    => a lot of code was factorized
+    - less overhead is introduced during scheduling
+    - simpler API for the context factory
+    - the logic for process creation,destruction and manipulation was simplified
+  * Simplification of the s_smx_process_t data structure.
+    => accesing the simix level data associated to a process is faster now,
+       and the code is a lot more readable.
+
+ SMPI:
+  * Implement some more MPI primitives:
+    MPI_Bcast, MPI_Waitany, MPI_Waitall, MPI_Reduce, MPI_Allreduce, MPI_Scatter, MPI_Sendrecv, MPI_Alltoall
+    -implementation: Bcast: flat or 2-ary tree (default),
+                     Barrier: 4-ary tree,
+                     Reduce: flat tree
+                     Allreduce: Reduce then Bcast
+                     Alltoall: "basic_linear" if data per proc < 3Kb, "otherwise pairwise".
+                               Not yet implemented: "Bruck" for data per proc < 200b and comm size > 12
+                     Alltoallv: flat tree, like ompi
+                     Scatter: flat tree
+  * Add support for optimized collectives (Bcast is now binomial by default)
+  * Port smpirun and smpicc to OS X
+
+ SimDag:
+  * Kill SD_link_get_properties: hard to maintain and makes very little sense
+    Shout out if you used it.
+
+ GRAS:
+  * Display the list of still queued messages in SG mode when existing
+    the process.
+
+ XBT:
+  * Add xbt_set_get_by_name_or_null() [Silas De Munck]
+  * Add xbt_graph_node_get_outedges() [Silas De Munck]
+  * Add xbt_str_from_file(FILE*)
+  * Add xbt_dict_get_key achieving a linear reverse search
+  * Remove the context module
+
+ Portability report of this version:
+  * Main portability targets:
+    - Linux(debian)/x86/context
+    - Linux(debian)/x86/pthreads
+    - Linux(debian)/amd64/context
+    - Linux(debian)/amd64/pthreads
+    On these, we still have the eratic breakages of gras/pmm and
+      amok/saturate_sg reported in previous version. We still think
+      that the tests are the cause of the fault, not the tested code.
+
+    - Mac OSX Leopard/x86/context
+    Still false negative in tesh autotesting.
+    Smpi still fails, but this time because readlink does not accept -f
+    Everything seems to work properly beside of that.
+
+  * Exotic platforms:
+    - AIX version 5.3 (only tested contexts this time)
+      Smpi still fails there because mktemp is not installed.
+      Everything seems to work properly beside of that.
+    - OpenSolaris 11
+      I managed to compile it for the first time, but several breakages.
+      Won't delay the release for this exotic platform.
+
+  * Windows: it's still lagging behind. If you want to help, please
+    stand up.
+
+ Timing report of this version:
+  This version seem to be more than 5% faster than 3.3.1 (on linux
+    64bits with contextes). The gain is less than expected, we are
+    investigating this for next release.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Wed, 19 Aug 2009 17:07:12 +0200
+
+SimGrid (3.3.1) stable; urgency=low
+
+ OVERALL CHANGES:
+  * Implement a --cfg-help to show existing configuration variables
+  * Build chain do not require doxygen in maintainer mode
+
+ GRAS:
+  * fix a bug on struct sizeof computation, which prevented the
+    exchange of arrays of structs in some conditions
+    - added a regression test about this in datadesc_usage
+  * Allow the exchange of 0-long dynamic vectors.
+    - for that, use -1 as indicator of dynamic size instead of 0
+    - This implied to change any size from unsigned long to long,
+      reducing a bit communication abilities, but I guess that with
+      64bits being quite common, this is more than enough.
+    - This also induce a protocol change, thus bumping network protocol
+      version from 0 to 1 (if we have external users, we have to get
+      clean on that point too ;)
+    - added two regression tests about this in datadesc_usage
+  * Be more verbose when propagating local exceptions
+    This helps debugging.
+  * Display the status of simulated processes when receiving SIGINT in
+    simulation mode
+
+ MSG:
+  * Allow to control the simulation from a trace file.
+    New functions MSG_action_register() and MSG_action_trace_run()
+    The first one allows to associate a function execution to each
+     kind of action while the second one parses a trace file and
+     triggers the corresponding actions within the system.
+    For now, only a toy example is provided in examples/msg/actions
+  * Add an exemple of process migration in examples/msg/migration
+  * Fix a bug in task exchange which broke MSG_task_get_sender()
+    Add a teshsuite regression test for that.
+    [Bug: if MSG_task_get_sender() is called after sender exit,
+     bad things happen]
+  * Fix a bug which prevented suspend/resume to work properly
+  * Display the status of simulated processes when receiving SIGINT
+    This fixes a regression of v3.3. due to the introduction of SIMIX
+  * Bug fixing in failure management:
+    - trace could not start by a failure at time 0
+    - failure during communications were not working
+
+ SIMIX:
+  * Add SIMIX_process_set_name() to change the name of the current
+    process in the log messages.
+  * Store smx_hosts in a dict since we only retrieve them by name
+  * Move the configuration infrastructure to surf
+
+ SIMDAG:
+  * Move the configuration infrastructure to surf
+
+ SMPI:
+  * Massive internal cleanups:
+    - Store internal structures on processes instead of hosts (allows
+      to have more than one process per host, in addition of being more
+      logical)
+    - Cleanup the initialization/finalization process
+    - Kill a whole bunch of unneeded synchronization:
+      processes run in exclusive manner within the simulator
+    - Move queues from global tables to process data fields
+  * Improve smpirun:
+    - now accept -platform and -hostfile arguments
+    - Pass the right rank value to processes according to the hostfile
+  * Compile the examples by default, and use them as regression tests
+  * Implement MPI_Wtime()
+  * Change the reference speed to a command line option
+
+ SURF:
+  * TCP_gamma can now be specified as command line option using
+    --cfg=TCP_gamma:10000000.0
+  * Change the --surf-path cmd line option into --cfg=path:
+
+ XBT:
+  * Also include strbuff from xbt.h public header
+  * xbt_ex_display(): do not free the exception after displaying
+    This allows to do more with the given exception afterward.
+    Users should call xbt_ex_free() themselves.
+
+
+
+ Portability report of this version:
+  * Main portability targets:
+    - Linux(debian)/x86/context
+    - Linux(debian)/x86/pthreads
+    - Linux(debian)/amd64/context
+    - Linux(debian)/amd64/pthreads
+    These targets fail about 1/10 of times on gras/pmm, but we believe
+      that this is because of the test, not because of simgrid.
+    amok/saturate_sg fails even more rarely, and the test may not be
+      the problem.
+
+    - Mac OSX Leopard/x86/context
+    The test suite still spits tons of errors because some obscure
+      force prevents us from removing the temporary directories
+      arguing that they still contain some metadata I've never heard of.
+    Smpi fails because seq is not installed.
+    Everything seems to work properly beside of that.
+
+  * Exotic platforms:
+    - AIX version 5.3 (both contexts and pthread)
+      Smpi still fails there because mktemp is not installed.
+      XML inclusions seems rosty on AIX.
+
+  * Windows: it's still lagging behind. If you want to help, please
+    stand up.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Sat, 27 Jun 2009 00:14:30 +0200
+
+SimGrid (3.3) stable; urgency=high
+
+ OVERALL CHANGES:
+
+  * JAVA BINDINGS for MSG (you dreamt of them? We made them)
+    [Malek Cherier & Mt]
+
+  * Introduce the SIMIX module: factorize code between MSG and GRAS.
+    [Bruno Donassolo]
+
+    Until now, GRAS were using MSG as an interface to SURF. It was
+    quite difficult because both interface have several differences
+    (MSG channels vs GRAS sockets were the most notable point).
+
+    This also opens the gate to SMPI (which should occur soon) and speed
+    up simulations by to 40% (even if it were not the main goal).
+
+    **************************************
+    *DO NOT MIX 3.2 RESULTS WITH 3.3 ONES* Simix may changes simulations!
+    **************************************
+    The point is that events occuring at the exact same timestamp are
+    not scheduled in the same order with the old and new version. This
+    may be enough to completely change the execution of simulations in
+    some cases. Sorry for the inconvenience.
+
+  * Cleanup and upgrade the XML format to push further scalability
+    issues (check http://hal.inria.fr/inria-00256883/ for more info)
+
+  * Improve the testing infrastructure with tesh. Now a very large part of
+    the code is tested not only by being run but also by checking that the
+    output match an expected output [Mt].
+
+  * Move on to FleXML v1.7 for the embeeded XML parsers. This version
+    is really less memory-demanding, which should allow you to use
+    larger files in SimGrid [AL].
+
+  * Inform valgrind about our contextes, so that it becomes usable
+    with the default (and more effecient) version of SimGrid
+    [contributed by Sékou Diakite, many thanks]
+
+ GRAS:
+  * Introduce a listener thread in charge of receiving incomming
+    messages from the network. It allows to overlap communication and
+    computation but most notably, it removes some stupid deadlocks due
+    to the fact that so far, a process could not send and receive at
+    the same time. This made most non trivial communication schema
+    impossible.
+  * Convert the PIDs from long int to int to match the MSG ones (and
+    linux ones too) [Mt]
+  * New function: gras_agent_spawn() to launch a new process on
+    current host. Only working in simulation for now. [Mt]
+  * New function: gras_os_hostport() returning a constant form (ie,
+    not needing to be freed) of "gras_os_hostname():gras_os_myport()"
+
+ XBT:
+  * Make the backtrace of exceptions more human readable [Mt]
+  * New module: xbt/str [Mt]
+    a ton of string utility functions (split, join, printf to a newly
+    allocated buffer, trim, etc)
+  * New module: xbt/hash [Mt]
+    SHA1 hashing algorithm (more to come if needed)
+  * New module: xbt/synchro [Mt]
+    synchronization tools (mutex and conditions) working the same way
+    in simulation and in real life (mainly useful for GRAS, but not
+    only).
+  * New module: xbt/queue [Mt]
+    classical producer/consumer synchronization scheme
+  * xbt_dynar_new_sync() creates a synchronized dynar. All access
+    (using the classical functions will get serialized) [Mt]
+  * Make dictionary internal table dynamic. No need to specify its size
+    anymore; functions xbt_dict_new_ext() and xbt_dict_hashsize_set()
+    thus dropped. [Mt].
+  * Make sure the log channels are organized as a tree under windows
+    (because of ANSI C compatibility issue, any channel were child of
+     root directly) [Mt].
+
+ SURF:
+  * Cleaned many thing in surf and fixed a few bugs [AL].
+  * Add a nice command line configuration mechanism to compose models [AL].
+  * Add a new model for parallel tasks (ptask_L07) that is less buggy than
+    the previous one (KCCFLN05). It relies on something that looks like
+    a max-min sharing mechanism but cannot be written as such. A new solver
+    was thus designed [AL].
+  * Add a new solver to lmm. Based on Lagrange optimization and
+    gradient-based descent, it enables to efficiently maximise systems s.a
+
+     sum f_i(x_i) s.t Ax<= b  with A_{i,j}>=0 and f_i a concave function.
+
+    This solver enables to propose two new network models for TCP Reno and
+    TCP Vegas based on Low's work. These models still need to be fully
+    tested though [Pedro Velho].
+
+ SIMDAG [AL]:
+  * Bug fix in SD_simulate. Now the time bound given as argument is
+    used.
+  * Use the new parallel task model (ptask_L07) as default.
+  * Use the SURF command line configuration mechanism.
+  * 0-size tasks (for synchronization) should now work.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Sun Apr 12 05:20:36 CEST 2009
+
+SimGrid (3.2) stable; urgency=high
+
+  OVERALL CHANGES:
+   * Port to windows.
+     We still experience issues on this platform, but we believe that at
+     least MSG is usable.
+
+  GRAS API BREAKAGE (for simplification purpose, sorry):
+   * the gras_msgtype_by_name is not used anymore. Instead of
+       gras_msg_send(toserver, gras_msgtype_by_name("request"), &request);
+     you can write (and must)
+       gras_msg_send(toserver, "request", &request);
+   - If you still want to pass a gras_msgtype_t to the function (to cache
+     the type and avoid the lookup time), use the gras_msg_send_() variant.
+   - Impacted functions:
+     gras_cb_register, gras_cb_unregister, gras_msg_send, gras_msg_wait,
+     gras_msg_rpccall, gras_msg_rpc_async_call, gras_msg_wait_ext
+   * The callbacks are now expected to return 0 when everything went well
+     (just like the main() function)
+
+  GRAS new features and improvements:
+  * New module mecanism where user code can use per process globals [Mt]
+    This is similar to gras_userdata_*() functions, but for libraries. It
+      factorize some code developped over and over in the examples and AMOK.
+    It has still to be documented and used (only amok/peermanagement is
+      converted for now).
+  * Fix a vicious bug in the TCP buffering mecanism which leaded to message
+    loss when they were small enough to fit into the buffer and sent quickly
+    enough so that they can all get received in one shoot.
+  * gras_datadesc_by_name and gras_msgtype_by_name: now raise an exception
+    if not found. Use the *_or_null() variant for the old semantic.
+  * In gras_msg_handle, do not discard messages without callback.
+    They are probably messages to be explicitly awaited later (ie, proofs of
+    mis-synchronization in userland since they are sent before being awaited)
+    No big deal usually.
+  * gras_socket_meas_send/recv: semantic changed!
+    The numerical arguments used to be (1) the total amount of data to send
+    and (2) msg_size. This was changed to (1) msg_size and (2) amount of
+    messages. This was need for the fool willing to send more than MAXINT
+    bytes on quite fat pipes.
+       
+  AMOK:
+  * Do really rename the hostmanagement module to peermanagement. [Mt]
+    Ie, rename functions from amok_hm_* to amok_pm_*. This breaks the API,
+    but this is rather new and this was documented in the module
+    documentation (poor excuses, I admit)
+  * Bandwidth measurement semantic changed! This follows the changes to
+    gras_socket_meas_send/recv explained above.
+
+  SIMDAG:
+  * A sequential mode has been added to the workstations. When a workstation
+    is in sequential mode, it can execute only one task, and the other tasks
+    are waiting in a FIFO. [Christophe Thiery]
+
+  SURF:
+  * The KCCFLN05 workstation model now handles parallel tasks. It is the
+    model for SIMDAG. [Christophe Thiery]
+  * Bug fix in the maxmin solver: Some values were close to 0 instead of
+    equal to 0, which caused some bad behaviors in
+    saturated_constraint_set_update. I now use a threshold mechanism like in
+    surf. [AL]
+
+  XBT:
+  * When running manually src/testall, you select specific units [Mt]
+    testall is the result of our cunit mecanism, and should replace all
+    the scripty thingy around since bash don't run easily on billware.
+
+  * A mallocator system has been added. [Christophe Thiery]
+    Mallocators allow you to recycle your unused objects instead of freeing them
+    and allocating new ones.
+
+  Documentation update:
+  * FAQ reworking + New FAQs:
+    - "Valgrind spits tons of errors!" [Mt]
+    - "How to repport bugs" [Mt]
+    - "Cross-compiling a Windows DLL of SimGrid from Linux" [Mt]
+    - "What is the difference between MSG, SimDag, and GRAS?" [Mt]
+    - Communication time measurement within MSG [AL]
+    - I experience weird communication times when I change the latency [AL]
+  * GRAS tutorial [Mt]
+    It contains:
+     - an introduction to the framework and to the used communication model
+     - an initiatic tour introducing the most proheminent features:
+       o Part 1: Bases
+         . Lesson 0: Installing GRAS
+         . Lesson 1: Setting up your own project
+       o Part 2: Message passing
+         . Lesson 2: Exchanging simple messages
+         . Lesson 3: Passing arguments to the processes (in SG)
+         . Lesson 4: Attaching callbacks to messages
+         . Lesson 5: Using globals in processes
+         . Lesson 6: Logging informations properly
+         . Lesson 7: Using internal timers
+         . Lesson 8: Handling errors through exceptions
+         . Lesson 9: Exchanging simple data
+        . Lesson 10: Remote Procedure Calling (RPC)
+        . Lesson 11: Explicitely waiting for messages
+        . Recapping of message passing features in GRAS
+     - A HOWTO section containing:
+       o HOWTO design a GRAS application
+       More are due, of course. They will come latter. In the meanwhile, you can
+       check the examples which are still here.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri Mar 16 21:11:46 CET 2007
+
+SimGrid (3.1) stable; urgency=high
+
+  General:
+  * Port to gcc 4.x
+    There was a stack corruption somewhere, visible only when optimizing
+    with these versions. [Vince]
+
+  SIMDAG:
+  * This is a NEW module! SimDAG (SD for short) is a revival of the old SG
+    module that enabled to play with Directed Acyclic Graphs. It is built
+    directly on top of SURF and provides an API rather close to the old
+    SG. Some old codes using SG are currently under rewrite to check that
+    all needful functions are provided. [Christophe Thiery]
+       
+  SURF:
+  * Complete rewrite of the KCCFLN05 workstation model. It is now an
+    extension of the classical CLM03 model that gracefully handles
+    failures. This is now the default model for MSG and GRAS. It doesn't
+    handle parallel tasks yet though. [AL]
+  * Bug fix: Weights were not correctly set in the network part.
+    WARNING: This may have resulted in incorrect results with simulations
+    where there are more than one flow on a given link. [AL]
+
+  SURF, MSG, GRAS:
+  * After a (long ?) discussion on simgrid-devel, we have decided that the
+    convention we had on units was stupid. That is why it has been decided
+    to move from (MBits, MFlops, seconds) to (Bits, Flops, seconds).
+    WARNING : This means that all previous platform files will not work as
+    such with this version! A warning is issued to ask users to update
+    their files. [AL]
+    A conversion script can be found in the contrib module of the CVS, under
+    the name contrib/platform_generation/surfxml_update.pl [MQ]
+
+  MSG,GRAS:
+  * Bug fix: Processes were started in reverse order, wrt deployment file.
+    WARNING: if your code relies on this bug, please fix it.    [AL]
+  * Bug fix: Add a test in MSG_task_execute to stop whenever a task is
+    being executed on two different locations.                  [AL]
+  * Bug fix: Failures are now better supported thanks to Derrick's tests
+    (there was many failure situations I hadn't thought of and that weren't
+    correctly handled). [AL]
+  * New function: MSG_host_is_avail indicates you whether a given m_host_t
+    is up or down. [AL]
+
+  GRAS:
+  * New! a real RPC mecanism, as it ought to be since too long. [MQ]
+      Exception occurring on server-side are propagated back to client (!).
+
+    API CHANGE: the callback changed their prototype. Change:
+        int my_handler(gras_socket_t expeditor, void *payload_data) {
+      to:
+        int my_handler(gras_msg_cb_ctx_t ctx  , void *payload_data) {
+          gras_socket_t expeditor=gras_msg_cb_ctx_from(ctx);
+      and you're set.
+  * New! function: gras_msg_handleall to deal with all messages arriving
+      within a given period.
+  * New! function: gras_socket_server_range to get a server socket in a
+    range of port numbers (ease to avoid port number conflicts) [MQ]
+  * New! gras processes display their backtrace when they get a SIGUSR1
+      or when Ctrl-C is pressed. Use Ctrl-C Ctrl-C to exit.
+      Sweet to debug RL processes [MQ]
+
+  AMOK:
+  * Bandwidth module:
+    - Do not force experiment sizes to be expressed in kb, or it becomes
+      impossible to measure the latency this way (needs one byte-long tests)
+    WARNING: this changes the amok_bw_* function semantic. [MQ]
+    - Implements the link saturation stuff. [MQ]
+  * Peer management module:
+    New! module factorizing code that we wrote over and over [MQ].
+
+  XBT:
+  * New module: cunit (my jUnit implementation in ansi C) [MQ]
+    - Test units are placed directly into the library code, they get extracted
+      automatically and placed into the src/testall binary.
+    - Convert most of the XBT tests to this system.
+  * New functions: xbt_dynar_getfirst_as() and xbt_dynar_getlast_as() [MQ]
+  * XML parsing: rewrote parts of flexml to enable multiple xml parsers to
+    live in the same C code. This required to change a little bit the API
+    of surfxml parsing but shouldn't be an issue for end-users. [AL]
+  * New module: sparse graph structure with basic algorithms (this is work
+    in progress and the API is not considered to be frozen yet). [AL]
+  * Display more information on backtraces: source line & function names are
+    now displayed just like valgrind does (rely on addr2line tool) [MQ]
+  * New function: xbt_backtrace_display(). Sweet while debuging [MQ]
+  * Reworked a little bit some #include statements to load only required
+    headers. Some user code that relied on SimGrid to include stdlib or
+    stdio may need to include it by themselves. [AL]
+  * Fixed xbt/log.h. A missing SG_BEGIN_DECL prevented compilation with
+    g++. [AL]
+  * Renamed xbt_host_t into xbt_peer_t since it betterly describes what I
+    meant. This breaks the API of AMOK and of xbt/config. Sorry about this,
+    but I guess that almost nobody used those parts. [MQ]
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri, 14 Jul 2006 01:32:27 +0200
+
+SimGrid (3.0.1) stable; urgency=low
+
+  XBT:
+  * Unfortunately, I had missed 5 misnamed functions:
+      xbt_fifo_item_t xbt_fifo_newitem(void);
+      void xbt_fifo_freeitem(xbt_fifo_item_t);
+      xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l);
+      xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i);
+      xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i);
+    They're now deprecated. Please use their new versions:
+      xbt_fifo_item_t xbt_fifo_new_item(void);
+      void xbt_fifo_free_item(xbt_fifo_item_t);
+      xbt_fifo_item_t xbt_fifo_get_first_item(xbt_fifo_t l);
+      xbt_fifo_item_t xbt_fifo_get_next_item(xbt_fifo_item_t i);
+      xbt_fifo_item_t xbt_fifo_get_prev_item(xbt_fifo_item_t i);
+    [AL]
+  * Bugfix: really disconnect fifo items which are remove_item()ed [AL]
+  * Documentation: xbt_log module unmercifully reworked [MQ]
+  * Bugfix: there was a problem with the ending of contexts with
+    the pthread backend. It caused some weird deadlock or behavior
+    depending on the pthread implementation. [AL]
+  * Bugfix: get the exceptions raised in the simulator repport where
+    and why they come from when they are not catched in time [AL, MQ]
+
+  SURF:
+  * Bugfix: Do repport the error when two non-connected hosts try to
+    exchange data (Thanks to Flavien for stumbling into this one) [AL]
+
+  SURF:
+  * Add additionnal checkings on communications. Assert that two
+    communicating hosts are connected by a set of links... [AL]
+       
+  MSG:
+  * Add additionnal checkings on channel values in communication [AL]
+  * New: MSG_task_get_source to see on which host a task was generated [HC]
+  * New: int MSG_task_probe_from_host(int channel, m_host_t host): returns
+    the number of tasks waiting to be received on channel and sent
+    by host. [AL]
+  * New: MSG_error_t MSG_task_get_from_host(m_task_t * task, int channel, m_host_t host);
+    waits for the first task coming from a given host.. [AL]
+       
+  GRAS new functionnalities: [MQ]
+  * Enhance the parsing macro to allow the size of multidimentional objects
+    to be given thru annotations.
+  * New example (and documentation): Matrix Multiplication a la RPC
+    (as when I was young!) and fix a bunch of bugs found on the way.
+
+  GRAS performance improvements: [MQ]
+  [DataDesc]
+  * Reduce the amount of cbps creation/destruction by making it static to
+    datadesc_send/recv() and using a (newly created) cbps_reset (based on
+    dynar_reset ())
+  [Virtu]
+  * Change libdata to a set so that we can search for stuff by ID (and thus
+    reduce the insane amount of dict lookups)
+
+  [Transport]
+  * Actually implement gras_datadesc_copy() so that we don't have to mimick
+    RL communication on top of SG since it's so uneffective.
+    It may also be used for inter-thread communication in RL, one day.
+  * Use gras_datadesc_copy() to exchange messages on top of SG
+    Allows to:
+    - improve message exchange performance on top of SG
+    - deprecate transport_plugin_sg.c:gras_trp_sg_chunk_send() & recv()
+  * Don't exchange on the network the size of the used part of buffer,
+    instead, specify the possible buffer size to read().
+    Advantages:
+     - reduces the amount of read/write calls (one pair per exchange)
+     - reduces the amount of exchanged data (the size)
+     - allows to retrieve all arrived data on receiver side, if we don't need
+       it right now (subsequent read will peek the buffer)
+     - allows the receiver to proceed with the begining of the stream before
+       everything is arrived
+     - make it possible to build an iov transport (using readv/writev)
+    Extra difficulty:
+     - take care of the data with non-stable storage (like stacked data),
+       and bufferize them.
+  * If possible, TCP send uses vector I/O (when writev() is here)
+     - Don't use it for receive since we send data sizes and data on the
+       same stream, so we wouldn't be able to chain large amount of chunks
+       before having to flush the stuff to read the size.
+  * Rework the transport plugin mecanism to simplify it and reduce the
+    amount of pointer dereferencement when searching for the right function
+    to use.
+
+  * I guess that now, we do almost as few system calls as possible while
+    doing as few data copy as possible.
+
+    To improve it further, we could try to send all the sizes first and then
+    all the data (to use iov on receiving size), but it's only a partial
+    solution: when you have 2 dimensional data, the sizes of the second
+    dimension is data of the first dimension, so you need 3 streams.
+
+    I'm not sure the potential performance gains justify the coding burden.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 21 Oct 2005 14:42:20 +0200
+
+SimGrid (3.00) stable; urgency=high
+
+ SURF:
+  * New! Give the possibility to hijack the surf parser and thus bypass
+    MSG_create_environment and MSG_launch_application. Have a look at
+    examples/msg/msg_test_surfxml_bypassed.c to see how it can be done.
+       
+ -- Arnaud Legrand <simgrid-devel@lists.gforge.inria.fr>  Sat, 20 Aug 2005 23:25:25 -0700
+
+SimGrid (2.96) unstable; urgency=low
+
+  AKA SimGrid 3 rc 2.
+
+  XBT:
+  * New! Exception handling with setjmp or such (code from OSSP ex) [MQ]
+    This deprecates the xbt_error_t mecanisms.
+    It modifies (simplifies) all XBT and GRAS API.
+    MSG API keeps unchanged (exceptions raised by XBT are catched from
+     within MSG and masked with existing error handling facilities)
+
+  SURF:
+  * New! Add a FATPIPE model. [AL]
+  * New! Add a parallel task model. [AL]
+  * New! Add automatically a loopback interface (in the default
+    network model) if none was precised.
+
+  MSG
+  * Bugfix: MSG_process_resume now works with the current running process.
+    [AL]
+  * New! Add MSG_parallel_task_create and MSG_parallel_task_execute. [AL]
+  * Modification of MSG_task_get_compute_duration. Once a task has been
+    processed, the value returned by this function is now equal to 0. [AL]
+  * New! Add double MSG_task_get_remaining_computation(m_task_t task) and
+    MSG_error_t MSG_task_cancel(m_task_t task). Add a state
+    (MSG_TASK_CANCELLED) to MSG_error_t corresponding to the cancelation
+    of a m_task. For now, MSG_task_cancel only works with computation
+    tasks. [AL]
+  * New! Add double MSG_get_host_speed(m_host_t h) that returns the speed
+    of the processor (in Mflop/s) regardless of the current load on the
+    machine. [AL]
+  * API Change: use proper naming convention for MSG_getClock and
+    MSG_process_isSuspended: MSG_get_clock and MSG_process_is_suspended.
+    [AL]
+  * New! Add void MSG_task_set_priority(m_task_t task, double priority).
+    This function changes the priority of a computation task. This priority
+    doesn't affect the transfer rate. A priority of 2 will make a task
+    receive two times more cpu power than the other ones. This function
+    has been added to suit the needs of Nguyen The Loc and hasn't been that
+    much tested yet. So if it fails, please report it and send me your code.
+    [AL]
+  * API Change: removed all functions and types that were marked "deprecated"
+    since many months. Renamed MSG_global_init_args to MSG_global_init.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Mon,  8 Aug 2005 17:58:47 -0700
+
+SimGrid (2.95) unstable; urgency=low
+
+  XBT
+  * Steal some nice code to GNU pth to fix context detection and usage [AL]
+  * Cleanup in the xbt_config API; add configuration callbacks. [MQ]
+  * Cleanup in the initialization API: the unused "defaultlog" is dead. [MQ]
+
+  SURF
+  * Bugfix: Allow absolute paths for platform description files [MQ]
+  * Bugfix: do free the variables after use. Leads to drastic performance
+    improvement [AL]
+  * Implement max_duration (ie, timeouts) on resources [AL]
+
+  MSG
+  * Implement MSG_config to configure MSG at runtime. xbt_cfg test on a real
+    case ;) [MQ]
+  * Implement MSG_channel_select_from() to help GRAS now that SURF provide
+    the needed support (timeouts) [AL]
+
+  GRAS (new features)
+  * Implement measurement sockets. You can now get the bandwidth between two
+    hosts thanks to AMOK (see below). [MQ]
+  * gras_datadesc_dynar() builds a dynar type descriptor, allowing to send
+    dynar over the network (yeah) [MQ]
+  * Real (even if simplistic) implementation of gras_os_myname() on RL [MQ]
+  * simple/static token-ring example. [Alexandre Colucci and MQ]
+  * Use MSG_channel_select_from() and remove the *slow* hack we had to put
+    in place before [MQ]
+
+  GRAS (bug fixes)
+  * Differentiate the types "char[22]" and "unsigned char[22]" in automatic
+    type parsing. "short" and "long" modifiers were also ignored; other
+    modifier (such as reference level) are still ignored. [MQ]
+  * Embeed the buffer size within the buffer itself on SG. [MQ]
+    That way, send() are atomic and cannot get intermixed anymore (at least
+    the ones which are less than 100k; bigger messages still have the issue)
+  * Array size pushed by the field, not by the field type (or each
+    and every long int will push stuff to the cbps) [MQ]
+  * use select() to sleep since it allows to portably sleep less than one
+    second. [MQ]
+
+  GRAS (minor cleanups)
+  * <project>.Makefile.local (generated from gras_stub_generator) |MQ]:
+    - Do clean .o files
+    - Compile with -g
+  * Type Callbacks now receive the gras_datadesc_type_t they work on as argument.
+  * type category 'ignored' killed as it was never used and were difficult
+    to transmit.
+  * whether a type can cycle or not is now a flag, leaving room for more
+    flags (as "ignored", if we feel the need one day ;)
+  * Rename raw sockets to measurement sockets since "raw" has another
+    meaning in networking community.
+
+  AMOK
+  * Advanced Metacomputing Overlay Kit introduction. It is based over GRAS
+    and offers features not belonging to GRAS but that most applications
+    need. One day, it may be a set of plugins loadable at runtime.
+  * New module: bandwidth
+    bandwidth measurement between arbitrary nodes running this module. [MQ]
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Thu, 30 Jun 2005 16:29:20 -0700
+
+SimGrid (2.94) unstable; urgency=low
+
+  The first beta release of SimGrid 3 !
+
+  >>>Arnaud<<<
+  (documentation)
+  * Update the main page and the FAQ. Adding references to gforge.
+
+  (gras)
+  * Add a gras_os_getpid function.
+
+  (msg)
+  * Add MSG_task_get_compute_duration() and MSG_task_get_data_size()
+  * Extend the logs so that they also print PID, hostname, date, ... if
+    available.
+  * Convert the MSG example to the use of xbt_logs instead of PRINT_MESSAGE,
+    and kill the old version which were in testsuite/
+  * Rewrite tools/MSG_visualization/colorize.pl for using with logs instead
+    of PRINT_MESSAGE
+
+  (xbt)
+  * Add xbt_os_time(). As the rest of xbt/portability, this is not public
+    for users. Instead, each programming environment (GRAS, MSG,...) use it
+    when needed to provide such a feature to users.
+    Don't shortcut the mecanism or you will also shortcut the virtualization
+    you need on the simulator.
+
+  >>>Martin<<<
+  (infrastructure)
+  * Cleanups in configury with regard to compile optimization/warning flags.
+    Also add -fno-loop-optimize to any powerpc since it's the optimization
+    killing gcc (< 3.4.0).
+  * Doxygen cleanups: move MSG examples, kill the second Doxygen phase
+    needed by MSG examples complications
+  * Borrow configury beautifications from PHP
+
+  (xbt)
+  * Bugfix: XBT_LOG_NEW_DEFAULT_CATEGORY now compiles without compiler
+    warning (thanks loris for stumbling into this one).
+  * Bugfix: stop loading private headers (gras_config.h) from the public
+    ones (xbt/swag.h).
+
+  (gras)
+  * Change SIMGRID_INSTALL_PATH to GRAS_ROOT in Makefiles generated for user.
+  * Rename gras_get_my_fqdn to gras_os_myname and implement it in the simulator
+    RL would imply a DNS resolver, which is *hard* to do in a portable way
+    (and therefore delayed).
+  * Implement a real timer mecanism and use it in timing macros. This allows
+    to avoid rounding errors and get a 0.000005 sec precision in timing
+    macros. While I was at it, various cleanups:
+     - allow to declare more than one timed section per file (fix a stupid bug)
+     - move some private declaration to the right place
+     - merge conditional execution and timing macros into emulation module
+     - document the module
+     - make sure the module cleanups its mess on gras_exit
+  * Documentation improvements:
+     - (new) how to compile applications using GRAS
+     - (new) emulation support (timing macros)
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 13 May 2005 10:49:31 +0200
+
+SimGrid (2.93) unstable; urgency=low
+
+  Alpha 4 on the path to SimGrid 3 (aka the "neuf-trois" version)
+
+  [Arnaud]
+   - Use Paje properly where used. Still to be sanitized properly.
+   - Portability fix: Add an implementation of the contexts using pthread
+
+  [Martin]
+  (misc)
+   - Add xbt_procname(): returns the name of the current process.
+     Use it to show the current process's name in all logging.
+  (infrastructure)
+   - fix detection of older flex version and the reaction, since we do
+     depend on modern ones (we use lex_destroy)
+   - Better separation of SG and RL in the libs: remove all simulation code
+     from libgras. As a result, this lib is now only 200k when stripped.
+     Some of the xbt modules may also be duplicated (two sets and such) and
+     should be cleaned/killed before SG3.
+   - Insist on using xlC on AIX because of weird problems involving gcc there.
+   - Cleanup the make remote stuff. This is now done by scripts
+     tools/graspe-{master,slave} (GRAS Platform Expender). This is still
+     mainly for our private use, but we're working on changing them to user
+     tools, too.
+  (gras)
+   - Bugfix: flush the socket on close only if there is some *output*.
+   - Bugfix: flush idempotent when there's nothing to send (don't send size=0)
+  (msg)
+   - Add MSG_task_get_name. The task names are mainly for debugging purpose,
+     but anyway.
+
+ -- SimGrid team <simgrid2-users@listes.ens-lyon.fr>  Fri,  4 Mar 2005 14:32:37 -0800
+
+SimGrid (2.92) unstable; urgency=low
+
+  Alpha 3 on the path to SimGrid 3
+
+  [Arnaud]
+  (gras)
+   - New! First try of benchmarking macros.
+   - New! First try so that gras_stub_generator generate deployment and
+     remote compilation helpers.
+  (msg)
+   - Bugfix: Initialization fix in msg_test.
+
+  [Martin]
+  (surf)
+   - Bugfix: applied patch to lexer so that it doesn't need a huge heap.
+  (xbt)
+   - Bugfix: let dicts work with NULL content (_foreach didn't) and cleanups
+  (gras)
+   - API Change: gras_os_sleep to take the amount of seconds as a double.
+     Accepting an int was error prone since it was the only location where
+     seconds were coded as such. It leaded to damn rounding errors.
+   - Bugfix: Hard to belive that timers ever worked before this.
+
+ -- SimGrid team <simgrid2-users@listes.ens-lyon.fr>  Wed, 23 Feb 2005 22:09:21 +0100
+
+SimGrid (2.91) unstable; urgency=low
+
+  Alpha 2 on the path to SimGrid 3
+
+  [Arnaud]
+  (surf)
+   - Bug fix in the lmm_solver.
+  (msg)
+   - New! Interface to Paje (see http://www-id.imag.fr/Logiciels/paje/)
+     through the function MSG_paje_output.
+   - New! Introducing two new functions MSG_process_kill() and MSG_process_killall().
+   - It is possible to bound the rate of a communication in MSG with
+     MSG_task_put_bounded() (was already in the previous version but I had forgotten
+     to write it in the changelog).
+   - Bug fix to let GRAS run on top of MSG until we move it directly on top
+     of the SURF.
+
+  [Martin]
+  (infrastructure)
+   - Various cleanups to the autotools stuff
+   - Begin to move Gras examples to examples/gras/
+   - Let make distcheck work again (yeah!)
+  (documentation)
+   - documentation overhauled using doxygen.
+     gtk-doc-tools is dead in SimGrid now.
+   - Automatically extract all existing logging categories, and add the list
+     to the documentation (long standing one, to say the less)
+  (gras)
+   - Cleanup the known architecture table. Reorder the entries to group what
+     should be, and use a more consistent naming scheme.
+     (some of the test dataset are still to be regenerated)
+   - New! Allow library to register globals on each process just as userdata
+     does.
+      This is implemented using a xbt_dict and not a xbt_set, so we loose the
+       lookup time (for now).
+      Use it in msg and trp.
+      This cleans a lot the internals and helps enforcing privacy of the
+       headers between the gras components.
+   - New! Add a timer mechanism, not unlike cron(8) and at(1).
+   - Bugfix: gras_os_time was delirious in RL.
+   - Bugfix: gras_trp_select/RL don't run into the wall when asked to select
+     onto 0 sockets.
+   - Reenable GRAS now that it works.
+
+ -- Arnaud Legrand <Arnaud.Legrand@imag.fr>  Mon, 14 Feb 2005 14:02:13 -0800
+
+SimGrid (2.90) unstable; urgency=low
+
+  Alpha 1 on the path to SimGrid 3
+
+  * It is a long time since the last release of SimGrid. I'm sorry about
+    that but as I had told you, I was rewriting a lot of things. I apologize
+    to those who had been reporting bugs to me and that I had not answered.
+    If your bug is still in the new version, please tell me. Here is a
+    summary of the main changes.
+
+  * REVOLUTION 1: The SimGrid project has merged with the GRAS project
+    lead by Martin Quinson. As a consequence SimGrid gains a lot in
+    portability, speed, and a lot more but you'll figure it out later.
+    SimGrid now comprises 3 different projects : MSG, GRAS and SMPI.
+    I wanted to release the new MSG as soon as possible and I have
+    broken GRAS, which is the reason why, for now, only MSG is fully
+    functional. A laconic description of these projects is available
+    in the documentation.
+
+  * REVOLUTION 2: I have removed SG and I am now using a new simulation
+    kernel optimized for our needs (called SURF but only the developers
+    should use it). Hence, MSG is now roughly 30 times faster and I think
+    that by rewriting a little bit MSG, I could event speed it up a little
+    bit more. Beside the gain in speed, it is also much easier to encode a
+    new platform model with SURF than it was with SG. More to come...
+
+  * REVOLUTION 3: I have tried to change a little as possible the API of
+    MSG but a few things really had to disappear. The main differences
+    with the previous version are :
+       1) no more m_links_t and the corresponding functions. Platforms are
+         directly read from a XML description and cannot be hard-coded
+         anymore. The same format is used for application deployment
+         description. The new format is described in the documentation.
+         Have a look in tools/platform_generation. There is a tiny script
+         that converts from the old platform format to the new one. Concerning
+         the application deployment format, parsing the old one is tricky.
+         I think most of you should however be able to convert your files.  If
+         it is really an issue, I can write a C code that does the conversion.
+         Let me know.
+       2) the toolbox tbx does not exist anymore. We now have a library
+          with much more data-structures but without the hash-tables (we have
+          dictionaries that are much faster).
+
+ -- Arnaud Legrand <Arnaud.Legrand@imag.fr>  Mon, 31 Jan 2005 10:45:53 -0800
+
+*****************************************************************************
+* Follows the old GRAS changelog. It does not follow the same syntax, but I *
+* don't feel like converting the oldies. (Mt)                                *
+*****************************************************************************
+
+2005-01-31 Arnaud
+  Version 2.90: "the long awaited one"
+  - Finished rewriting and debugging MSG. Rewrote the documentation.
+  - disable GRAS for now since it needs to be ported to the newest SG
+
+2004-12-16 Martin
+  - Finish the port to windows (using mingw32 for cross-compile)
+
+2004-11-28 Arnaud
+  - Main loop and datastructures of SURF. A cpu resource object is
+    functional. Surf can thus be used to create cpu's with variable
+    performance on which you can execute some actions.
+       
+2004-11-15 Martin Quinson
+  - Port to ARM. Simply added the alignment and size descriptions. Should
+    work, but the ARM machines are so slow that I didn't had the opportunity
+    to 'make check' over there yet.
+
+2004-11-15 Arnaud Legrand
+  - Trace manager now written. It uses a heap structure and is therefore
+    expected to be efficient. It may however be speeded up (particularly
+    when many events occur at the same date) by using red and black
+    trees. One day maybe...
+  - Max-min linear system solver written. It uses a sparse matrix
+    structure taking advantage of its expected use. Most operations are
+    O(1) and free/calloc are called as few as possible. The computation of
+    the minimum could however be improved by using a red and black tree
+    (again ! ;).
+
+2004-11-03 Arnaud Legrand
+  - Rename every gras_* function that was in xbt/ to its xbt_
+    counterpart.
+  - Add a heap and a doubly-linked list to xbt
+  - Added a dichotomy to the dictionaries. make check works as well before
+    so I assume that the patch is correct. I do not know however if things
+    run effectively faster than before now. :)
+
+  Inclusion of the SimGrid tree in the GRAS one. The archive is renamed to
+  SimGrid, and the version number is bumped to 2.x
+
+2004-10-29 Martin Quinson
+  - Introduction of the remote errors.
+    They are the result of a RMI/RPC on the remote machine.
+    ErrCodes being scalar values, you can't get the host on which those
+    errors did happen. Extending the error mechanism as in Gnome is possible.
+    No idea yet whether it is a good idea.
+
+2004-10-28 Martin Quinson
+  - Interface revolution: the Starred Structure Eradication.
+    I used to do typedef struct {} toto_t; and then handle *toto_t.
+    Arnaud (and Oli) didn't like it, and I surrendered. Now, you have:
+      - ???_t is a valid type (builded with typedef)
+      - s_toto_t is a structure (access to fields with .)
+      - s_toto   is a structure needing 'struct' keyword to be used
+      - e_toto_t is an enum
+      -   toto_t is an 'object' (struct*)
+    Exemple:
+      typedef struct s_toto {} s_toto_t, *toto_t;
+      typedef enum {} e_toto_t;
+    Moreover, only toto_t (and e_toto_t) are public. The rest (mainly
+     s_toto_t) is private.
+
+  - While I was at it, all gras_<obj>_free() functions want a gras_<obj>_t*
+    so that it can set the variable to NULL. It was so for dicts and sets,
+    it changed for dynars.
+
+  - Fix a bunch of memleaks in dict_remove
+  - Fix a bug in sg/server_socket opening: it failed all the time.
+
+2004-10-07 Martin Quinson
+  - Speed up dynar lookup operation a bit.
+
+    gras_dynar_get is dead.
+
+    Now, you can choose between gras_dynar_get_cpy (the old gras_dynar_get
+    but should be avoided for efficiency reasons) and gras_dynar_get_ptr
+    (which gives you the address of the stored data).
+
+    gras_dynar_get_as is an helpful macro which allows you to retrieve a
+    copy of the data using an affectation to do the job and not a memcpy.
+
+    int toto = gras_dynar_get_as(dyn,0,int); rewrites itself to
+    int toto = *(int*)gras_dynar_get_ptr(dyn,0);
+
+    It does not really speedup the dynar test because they are
+    setting elements all the time (and look them seldom). But the dict does
+    far more lookup than setting.
+
+    So, this brings the dict_crash test from ~33s to ~25s (200000 elms).
+
+2004-10-05 Martin Quinson
+  - Allow to (en/dis)able the cycle detection at run time.
+
+    Whether we should check for cycle or not is now a property of each
+    datatype. When you think there may be some cycle, use datadesc_cycle_set.
+    datadesc_cycle_unset allow to remove this property when previously set.
+
+    Note that the cycle detection is off by default since it impacts the
+    performance. Watch the data you feed GRAS with ;)
+
+    This property is hereditary. Any element embedded in a structure having it
+    set have it set for the time of this data exchange.
+
+    You should set it both on sender and receiver side. If you don't set it on
+    sender side, it will enter an endless loop. If you forget on receiver
+    side, the cycles won't be recreated after communication.
+
+  - Header reorganization.
+    Kill gras_private.h, each submodule must load the headers it needs.
+
+2004-10-04 Martin Quinson
+  - Interface revolution: do not try to survive to malloc failure.
+
+    Now, gras_malloc and friends call gras_abort() on failure.
+    As a conclusion, malloc_error is not a valid error anymore, and all
+      functions for which it was the only gras_error_t return value are
+      changed. They now return void, or there result directly.
+    This simplify the API a lot.
+
+2004-09-29 Martin Quinson
+  - Re-enable raw sockets.
+    Created by gras_socket_{client,server}_ext;
+    Used with gras_raw_{send,recv}
+    No select possible.
+
+    It should allow to kill the last bits of gras first version soon.
+
+    This is not completely satisfactory yet (duplicate code with
+     chunk_{send,recv}; a bit out of the plugin mechanism), but it should
+     work.
+
+  - Simplify transport plugin (internal) interface by not passing any
+    argument to _server and _client, but embedding them in the socket
+    struct directly.
+
+2004-09-28 Martin Quinson
+  - Finish the port to AIX.
+    autoconf was my problem (segfault within the malloc replacement
+    function. No idea why)
+
+2004-09-16 Martin Quinson
+  - Fix some size_t madness on 64bit architectures.
+
+2004-09-08 Martin Quinson
+  - Reduce the number of system headers loaded, overload some more system
+    calls (such as malloc to cast the result of the system one, and work
+    properly on AIX)
+  - Fix and reintroduce the config support
+
+2004-09-07 Martin Quinson
+  - Source code reorganization to allow Arnaud to surf all over there.
+  - Allow to document the logging categories.
+  - Remove all uppercase from logging categories and useless cleanup in names.
+
+2004-08-18 Martin Quinson
+  Version 0.6.2 (protocol not changed; API changed)
+  - Interface cleanup: gras_msgtype_by_name returns the type (instead of a
+     gras_error_t), and NULL when not found. Functions expecting a msgtype
+     as argument (msg_wait; msg_send) deal with NULL argument by providing a
+     hopefully usefull message.
+  - Portability to prehistoric sparcs again
+
+2004-08-17 Martin Quinson
+  Version 0.6.1 (protocol not changed; ABI not changed)
+  - prealloc some buffers to speed things up
+
+2004-08-11 Martin Quinson
+  Version 0.6 (protocol not changed; ABI expended)
+  - The parsing macro can deal with the references, provided that you add
+    the relevant annotations (using GRAS_ANNOTE(size,field_name))
+
+2004-08-09 Martin Quinson
+  Version 0.5 (protocol not changed; ABI changed)
+  - Allow to off turn the cycle detection code in data exchange at
+    compilation time. It should be at run time, but I'm short of time (and
+    the config stuff is still broken). That way, we keep dict out of the
+    critical path, which is good because the performance is poor:
+     - search not dichotomial yet
+     - dynar give no way to access their content and memcpy everytime
+  - In composed data description (struct, ref and so on), stop foolness of
+    keeping the subtype's ID, but store the type itself. This keeps sets out
+    of the critical path, which is good since they rely on dynar and
+    dictionnaries. The only loose of that is that we cannot detect the
+    redeclaration of a structure/union with another content (but I'm not sure
+    the code detected well this error before anyway). We still can detect
+    the redefinition discrepancy for the other types.
+  - Use a whole bunch of optimisation flags (plus -fno-strict-aliasing since
+    it breaks the code because of type-punning used all over the place).
+    This breaks on all non-gcc architectures (for now).
+
+  All those changes (plus the buffer of last time) allow me to gain 2 order
+  of magnitude on cruel tests consisting of 800000 array of integers on two
+  level of a hierarchical structure (200 secondes -> 4 secondes)
+
+  API change:
+    - the selector of reference must now return the type it points to, not
+      the ID of this type.
+
+2004-08-06 Martin Quinson
+  Version 0.4 (protocol changed; ABI not changed)
+  - Allow to pass --gras-log argument to processes in simulation mode. Really.
+  - New debugging level: trace (under debug) to see effect of GRAS_IN/OUT
+  - Implement a buffer transport, and use it by default (it relies on tcp in
+     real life and on sg in simulation).
+    That's a bit hackish since I had a new field to the structure to store
+     its data without interfering with the subtype ones. Inheritance
+     is tricky in C. And that's a kind of reverse inheritance with one class
+     derivating two classes. Or maybe a game with java interfaces. Anyway,
+     that's damn hard in C (at least).
+    Moreover, I got tired while trying to ensure plugin separation and
+     genericity in SG mode. MSG wants me to do weird things, so let's go for
+     cruel hacks (temporarily of course ;).
+     See comment in transport_private.h:71
+  - do not include all the _interface headers in private but in the files
+    which really need them (to cut the compilation time when they are
+    modified)
+
+2004-07-26 Martin Quinson
+  Version 0.3 (protocol not changed; ABI changed)
+  - Major overhault of the datadesc interface to simplify it:
+    - shorted the function names:
+      s/gras_datadesc_declare_struct/gras_datadesc_struct/ and so on
+    - add a trivial way to push/pop integers into the cbps without malloc.
+      This allows to make really generic sub_type description, which simply
+        pop their size of the stack.
+    - add a function gras_datadesc_ref_pop_arr() which does what users want
+      most of the time: Declare a dynamic array (which pops its size of the
+      stack) and declare a reference to it. Poor name, but anyway.
+    - kill the post-send callback, add a post-receive one
+
+2004-07-23 Martin Quinson
+  Version 0.2 (protocol changed; ABI changed)
+  - add some testing for cpbs in the test cases, and fix some more bugs.
+    This invalidate again the little64 data file, since I cannot regenerate
+    it myself.
+  - remove an awfull optimization in the logging stuff, allowing me to:
+    - understand it again
+    - learn gcc how to check that the argument match the provided format
+    - fix all errors revealed by gcc after that
+  - internal keys of dict are not \0 terminated. Deal with it properly in
+    loggings instead of segfaulting when the user want to see the logs :-/
+
+2004-07-22 Martin Quinson
+  - Fix some stupid bug preventing cbps (callback postit) from working
+
+2004-07-21 Martin Quinson
+  - Some documentation cleanups
+  - remove the useless last argument of msgtype_declare
+  - rename the Virtu functions to fit into the 'os' namespace
+  - move headers src/include -> src/include/gras/ and stop fooling with
+    gras -> . symbolic link
+  - make distcheck is now successful
+
+2004-07-19 Martin Quinson
+  Version 0.1.1
+  - Build shared library also
+  - Install html doc to the right location
+  - stop removing maintainer files in make clean
+  - build tests only on make check
+
+2004-07-13 Martin Quinson
+  version 0.1
+  - No major issue in previous version => change versionning schema
+  - Re-enable little64 convertion test now that Abdou kindly regenerated the
+    corresponding dataset.
+
+2004-07-11 Martin Quinson
+  version 0.0.4
+  - Get it working with any kind of structure (we can compute the padding
+    bytes remotely for all the architectures I have access to)
+  - Implement the structure parsing macro (still not quite robust/complete)
+  - Improvement to the remote testing toysuite
+
+2004-07-10 Martin Quinson
+ [autoconf mechanism]
+  - get ride of a bunch of deprecated macros
+  - actually run the test for two-compliment, not only compile it :-/
+  - test whether the structures get packed (and bail out if yes. Damn.
+    Alignment is a serious matter)
+  - test whether the structures get compacted (but respecting the alignment
+    constraints of each types)
+  - test whether the array fields of structures can straddle alignment boundaries
+ [base]
+  - Damnit, double are bigger than float (typo in creation of 'double' datadesc)
+    (took me 2 hours to find that bug, looking at the wrong place)
+  - Add gras_datadesc_declare_{union,struct}_close(). They must be used
+    before sending/receiving and are used to compute the offsets of fields
+  - Given that padding size depend even on compiler options, keep track of
+    alignment and aligned_size only for the current architecture. Not a big
+    deal since we send structure fields one after the other (seems
+    reasonable).
+  - Add the datastructure used for IEEE paper by the PBIO guys to the test
+    program, let it work on linux/gcc/little32. portability todo.
+
+2004-07-08 Martin Quinson
+  - import and improve remote compilation support from FAST
+  - make sure make check works on half a dozen of machines out there
+
+2004-07-07 Martin Quinson
+ Let's say it's version 0.0.3 ;)
+  - Implement conversions (yuhu!)
+  - Let it work on solaris (beside conversion, of course)
+  - Stupid me, using rand() to generate the conversion datatests in not wise.
+
+2004-07-06 Martin Quinson
+  - Let make dist work, since I'm gonna need it to compile on remote hosts
+  - Let Tests/datadesc_usage write the architecture on which the file was
+    generated as first byte.
+  - Add PowerPC (being also IRIX64), SPARC (also power4) and ALPHA
+    architecture descriptions.
+  - Add datadesc_usage.{i386,ppc,sparc} files being the result of execution
+    on those architectures.
+  - Optimization: send/recv array of scalar in one shoot
+
+2004-07-05 Martin Quinson
+  - YEAH! GRAS/SG and GRAS/RL are both able to run the ping example !
+
+  - Plug a whole bunch of memleaks
+  - each process now have to call gras_{init,exit}. One day, their log
+    settings will be separated
+  - Continue the code factorisation between SG, RL and common in Transport.
+
+2004-07-04 Martin Quinson
+ [Transport]
+  - Redistribution between SG and RL.
+    We wanna have to accept in SG, so move accepted related parts of RL in
+    the common part. (more precisely, the dynar of all known sockets is no
+    more a static in transport.c, but part of the process_data)
+ [Core/module.c]
+ [gras_stub_generator]
+  - Bug fix: Do call gras_process_init from gras_init (wasnt called in RL).
+
+2004-07-03 Martin Quinson
+  - Create a new log channel tbx containing dict, set, log, dynar (to shut
+    them all up in one shot)
+ [DataDesc]
+  - Fix the ugly case of reference to dynamic array.
+  - New (semi-public) function gras_datadesc_size to allow the messaging
+    layer to malloc the needed space for the buffer.
+ [Transport]
+  - gras_socket_close now expect the socket to close (and not its address to
+    put NULL in it after it). This is because the socket passed to handlers
+    is one of their argument (=> not writable).
+ [Messaging]
+  - propagate the interface cleanup from last week in datadesc, ie remove a
+    superfluous level of indirection. User pass adress of variable
+    containing data (both when sending and receiving), and not of a variable
+    being a pointer to the data. Let's say that I like it better ;)
+      The price for that is constructs like "int msg=*(int*)payload" in
+    handlers, but it's a fine price, IMHO.
+ [examples/ping]
+  - Let it work in RL (yuhu)
+
+2004-06-21 Martin Quinson
+ [Transport]
+   - porting SG plugin and SG select to new standards (works almost).
+   - plug memleaks and fix bugs around.
+
+ [DataDesc]
+   - cleanup the prototype of data recv and force users to specify when they
+     want to handle references to objects. Test case working even for cycles.
+   - plug memleaks. Valgrind is perfectly ok with this.
+
+2004-06-12 Martin Quinson
+ [Transport]
+   - cleanup the separation between plugin and main code in plugin creation
+
+2004-06-11 Martin Quinson
+ [Transport]
+   - Reput hook for raw sockets, needed for BW experiments
+   - kill a few lines of dead code
+ [Data description] Interface cleanup
+   - gras_datadesc_by_name returns the searched type or NULL.
+     That way, no variable is needed to use a type desc once, which makes
+      the code clearer.
+   - gras_datadesc_declare_[struct|union]_append_name is removed. The last
+      two parameters were strings (field name, type name), leading to
+      common errors.
+ [Dicos] Interface cleanup
+   - gras_dico_retrieve -> gras_dico_get ; gras_dico_insert -> gras_dico_set
+     This is consistant with the dynar API.
+
+2004-04-21 Martin Quinson
+ [Messaging]
+   - Porting to new standards.
+ [Data description]
+   - interface cleanup.
+     There is no bag anymore, no need to take extra provision to mask the
+       pointers behind "ID".
+     Better splitup of functions between files create/exchange/convert.
+       This is still a bit artificial since convert and receive are so
+       interleaved, but anyway.
+ [Virtu(process)]
+   - add a queued message list to procdata (the ones not matching criteria
+     in msg_wait)
+   - factorize some more code between SG and RL wrt procdata
+ [Tests]
+   - use gras_exit in example to track memleaks
+   - get rid of gs_example now that GS is properly integrated into gras
+   - update run_test to integrate the lastest tests (datadesc)
+ [Logging]
+   - rename WARNINGn macros to WARNn since it prooved error-prone
+
+2004-04-19 Martin Quinson
+ [Data description]
+   - register init/exit functions within gras module mechanism
+   - send/receive function.
+   Convertion is not implemented, but short-cutted if not needed.
+   struct/array elements are sent one by one (instead of block-wise), but
+     nobody really cares (yet). Get a prototype before optimizing.
+   - tests (using a file socket) for DD send/receive on:
+     - base types: int, float
+     - array: fixed size, string (ie ref to dynamic string)
+     - structure: homogeneous, heterogeneous
+     - chained list, graph with cycle
+   Believe it or not, valgrind is not too unhappy with the results. The
+    cycle happily segfaults, but the others are ok. And I'm sick of pointers
+    for now.
+ [Transport]
+   [File plugin]
+     - Bugfix when using a filename explicitely (instead of '-')
+
+2004-04-09 Martin Quinson
+ [Transport plugins]
+   - factorize more code between RL and SG in socket creation
+   - Complete the implementation and tests of:
+     o TCP
+     o file (only in RL, and mainly for debugging)
+
+     I lost 3 days to design a portable address resolver, and then decided
+       that the prototype mainly have to run on my box.
+     Addressing portability too early may be like optimizing too early :-/
+ [Tests]
+   - use gras_init in the Tests instead of the crappy parse_log_opt
+     (the latter function is removed)
+ [Conditional execution]
+   - New functions: gras_if_RL/gras_if_SG (basic support for this)
+ [Code reorganisation]
+  - Get rid of libgrasutils.a since it makes more trouble than it solves.
+    Build examples against the RL library, since there is no way to disable
+    its creation for now.
+
+For information, the beginning of coding on GRAS was back in june
+2003. I guess that every line has been rewritten at least twice since
+then.