Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
make HostImpl::actor_list_ private
[simgrid.git] / ChangeLog
index b9f4bdd..d665a77 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-SimGrid (3.19) NOT RELEASED YET (target: March 20 2018, 16:15:27 UTC)
+----------------------------------------------------------------------------
+
+SimGrid (3.24.1) NOT RELEASED YET (v3.25 expected December 22. 2029, 04:19 UTC)
+
+Fixed bugs (FG#.. -> framagit bugs; FG!.. -> framagit merge requests):
+ - GH#31: [MC] please provide an option to make MPI_Send asynchronous
+ - GH#305: Unscheduled tasks are still excuted 
+ - FG!19: Removing RngStream
+
+----------------------------------------------------------------------------
+
+SimGrid (3.24) October 9. 2019
+
+The Clean Disk Release.
+
+S4U:
+ - Introduce a s4u::Disk interface to manage the newly introduced <disk>
+   tag. s4u::Disk is called to supplant s4u::Storage in a near future. It
+   thus becomes the default resource to execute I/O operations. Examples
+   and the file system plugin have been modified to use disks instead of
+   storage elements. Storage can still be used but is doomed to disappear.
+   Users are thus adviced to update their simulators accordingly.
+ - Barrier::wait returns SG_BARRIER_SERIAL_THREAD for (only) one actor
+   for consistency with pthread_barrier_wait()
+ - Host::get_englobing_zone() returns the englobing netzone
+ - Actor::on_destruction is now called in the destructor
+   Actor::on_termination new signal called when the actor terminates
+   its code.
+ - Global signals are now part of the Engine:
+   - on_platform_creation: after config settings, before the XML parsing
+   - on_platform_created: right after the XML parsing
+   - on_time_advance: each time the clock advances
+   - on_simulation_end: after simulation, before cleanups
+   - on_deadlock: as the name implies.
+ - C bindings:
+   - sg_{actor,host,link}_{data,data_set}() now all exist.
+     Use them to attach user data to the object and retrieve it.
+
+Models:
+ - Introduce an experimental Wifi model. It sounds reasonable
+   according to the state of the art, but it still has to be properly
+   validated, at least against ns-3 if not against reality.
+ - Improved the usability of ns-3. Several bugs were ironed out.
+ - host_energy: Wattage was expressed as 'idle:oneCore:allCores'.
+   It is now expressed as 'idle:epsilon:allCores' to properly model the
+   consumption of non-whole tasks on mono-core hosts. More info in the doc.
+
+MSG:
+ - convert a new set of functions to the S4U C interface and move the old MSG
+   versions to legacy (MSG_process_self*, MSG_process_{un}ref, ...)
+
+SMPI:
+ - Fortran bindings for DVFS have been removed.
+ - Add support for MPI_Irsend, MPI_Rsend, MPI_Rsend_init, MPI_Bsend,
+   MPI_Ibsend, MPI_Bsend_init, MPI_Buffer_attach, MPI_Buffer_detach
+ - SMPI can now be selected by cmake's find_module(MPI) with
+   MPI_C_COMPILER, MPI_CXX_COMPILER, MPI_Fortran_COMPILER variables.
+ - Add support for MPI Errhandlers in Comm, File or Win. Default errhandler is now
+   MPI_ERRORS_ARE_FATAL, so codes which were sending warnings may start failing.
+ - trace-call-location can be used with TI traces, and replayed, and is compatible
+   with smpi/comp-adjustment-file.
+ - sleep events are now correctly traced/replayed.
+ - Default for trace-call-location is now to use file names and not full paths.
+   To revert to previous behavior (in case of collision of filenames), option
+   "smpi/trace-call-use-absolute-path" can be set to yes.
+
+Model-Checker:
+ - Use the included xxHash as an hash implem when C++14 is usable.
+ - Option model-checker/hash was removed. This is always activated now.
+ - New option smpi/buffering controls the MPI buffering in MC mode.
+ - MPI calls now MC_assert() that no MPI_ERR_* code is returned.
+   This is useful to check for MPI compliance.
+
+Documentation:
+ - New section on plugins: how to define a new one, and existing ones.
+
+XBT:
+ - xbt_mutex_t and xbt_cond_t are now marked as deprecated, a new C interface
+   on S4U is already available to replace them by sg_mutex_t and sg_cond_t.
+
+XML:
+ - Introduce the <disk> tag as a replacement of the <storage>, <storage_type>,
+   and <mount> tags. The rationale is finish to decouple what should be handle
+   by SimGrid kernel (i.e., resources and activities) from plugins built in
+   user space (e.g., the file system plugin). This new tag currently accepts
+   only three attributes (id, read_bw, and write_bw). All the other information
+   that was declared with the storage related tags now has to be expressed as
+   properties. An example of platform using this new tag is available at
+   examples/platforms/hosts_with_disks.xml
+
+tesh:
+ - 'expect signal' can now accept more than one potential signal.
+
+Fixed bugs (FG#.. -> framagit bugs; FG!.. -> framagit merge requests):
+ - FG#28: add sg_actor_self (and other wrappers on this_actor methods)
+ - FG#29 and FG#33: provide a new C API to mutexes and condition variables
+ - FG#30: convert MSG_process_{un}ref to sg_actor_{un}ref
+ - FG#31: per-actor data
+ - FG#34: SG_BARRIER_SERIAL_THREAD?
+ - FG#35: model-checker does not like buster-produced binaries
+ - FG!13: MC: complete workaround in the error msg seen on modern systems
+ - FG!15: execute_flops now logs compute
+ - FG!16: Fix the ns-3 bindings when several flows are simultaneously finishing
+ - FG!17: ns-3: unblock the right number of communications + others issues
+ - FG!18: Improving the performance of the ns-3 bindings
+ - GH#189: Energy consumption of parallel tasks
+ - GH#219: Error in the throughput of TCP transfer
+ - GH!330: Minor polishing of English: Configuring_Simgrid
+ - GH!331: Fix a doc error about actors (Tutorial_algorithms)
+ - GH!332: Add '-O0' flag for: cmake -DCMAKE_BUILD_TYPE=Debug
+ - GH!334: Rework energy plugin, again
+
+----------------------------------------------------------------------------
+
+SimGrid (3.23.2) July 8. 2019
+
+Documentation:
+ - Nicer introduction page.
+ - Migrate the "Deploy your application" page to the new doc.
+ - Move Java as a subtree of MSG.
+
+General:
+ - Rename simgrid::TimeoutError to simgrid::TimeoutException.
+
+XBT:
+ - Drop xbt_dynar_sort_strings().
+
+Bugs:
+ - Really fix FG#26: Turning off a link should raise NetworkFailureException
+ - FG#27: Wrong exception thrown to wait_any when link is turned off
+ - GH#328: Java: Canceling multiple tasks in a single vm/host
+
+----------------------------------------------------------------------------
+
+SimGrid (3.23) June 25. 2019
+
+The Exotic Solstice Release.
+
+General:
+ - SunOS and Haiku OS support. Because exotic platforms are fun.
+ - Stop setting random seed with srand48() at initialization.
+ - Use addr2line as a fallback for stacktraces when backtrace is not available.
+ - Build option -Denable_documentation is now OFF by default.
+ - Network model 'NS3' was renamed into 'ns-3'.
+
+Python:
+ - Simgrid can now hopefully be installed with pip.
+
+S4U:
+ - wait_any can now be used for asynchronous executions too.
+
+XBT:
+ - New log appenders: stdout and stderr. Use stdout for xbt_help.
+ - Drop xbt_dict_dump.
+
+SMPI:
+ - SMPI now reports support of MPI3.1. This does not mean SMPI supports all MPI 3 calls, but it was already the case with 2.2
+ - MPI/IO is now supported over the Storage API (no files are written or read, storage is simulated). Supported calls are all synchronous ones.
+ - MPI interface is now const correct for input parameters
+ - MPI_Ireduce, MPI_Iallreduce, MPI_Iscan, MPI_Iexscan, MPI_Ireduce_scatter, MPI_Ireduce_scatter_block support
+ - Fortran bindings for async collectives.
+ - MPI_Comm_get_name, MPI_Comm_set_name, MPI_Count support.
+
+Model-checker:
+ - Remove option 'model-check/record': Paths are recorded in any cases now.
+ - Remove option 'model-check/sparse-checkpoint': Checkpoints are now
+   always sparse. That's an immense gain in memory, and can even be
+   faster because of cache effects. So there is no need to clutter the
+   code to allow the user to go for the unefficient mode.
+
+Network models:
+ - Remove the lagrange-based models (Reno/Reno2/Vegas). The regular
+   models proved to be more accurate than these old experiments.
+
+Fixed bugs (FG=FramaGit; GH=GitHub -- Please prefer framagit for new bugs)
+ - FG#1: Broken link in error messages
+ - FG#2: missing installation documentation
+ - FG#3: missing documentation in smpirun
+ - FG#6: Python bindings not available on PyPI
+ - FG#7: simple cmake call requires doxygen
+ - FG#8: make python bindings an optional dependency
+ - FG#10: Can not use MSG_process_set_data from SMPI any more
+ - FG#11: Auto-restart actors forget their on_exit behavior
+ - FG#12: -Denable_lto=OFF doesn't disable LTO
+ - FG#13: Installs unstripped file 'bin/graphicator'
+ - FG#14: Installs the empty directory 'doc/simgrid/html'
+ - FG#15: Setting -Denable_python=OFF doesn't disable the search for pybind11
+ - FG#17: Dead link in doc (pls_ns3)
+ - FG#20: 'tesh --help' should return 0
+ - FG#21: Documentation link on http://simgrid.org/ broken
+ - FG#22: Debian installation instruction are broken
+ - FG#26: Turning off a link should raise NetworkFailureException exceptions
+ - GH#133: Java: a process can run on a VM even if its host is off
+ - GH#320: Stacktrace: Avoid the backtrace variant of Boost.Stacktrace?
+ - GH#326: Valgrind-detected error for join() when energy plugin is activated
+
+----------------------------------------------------------------------------
+
+SimGrid (3.22) April 1. 2019
+
+The Easter Christmas Release (this one is somewhat late).
+
+Python:
+ - We are excited to introduce the SimGrid/S4U interface to your neighborhood
+ - Not complete yet: asynchronous activities (amongst others) are still missing
+ - Still ongoing: the interface may change in the future. We need more
+   testers! Please report any glitches.
+ - No new project using Java should start now. Please switch to Python.
+
+General:
+ - Some of the internal cleanups may lead to speed improvements:
+   - The hard limitation on the amount of simulated actors with
+     Java+Mac was removed. Now, the  available memory is the only limit.
+   - Our refcounting was tidyied, leading to 10% speedups in some cases.
+ - We are still working on making our code robust to the actor kills
+   and hosts' churn. Things are improving, but it's not perfect yet.
+ - Replaced our own code to display a backtrace (that was forking addr2line)
+   with the Boost.Stacktrace library.
+   You won't see your backtraces without this optional dependency.
+ - Bump cmake dependency to 3.5 (provided by Ubuntu 16.04).
+ - Stop setting random seed with srand() at initialization.
+
+XML
+ - In <host> and <peer>, 'availability_file' is now 'speed_file'.
+   XML file version remains 4.2 since old files are still compatible.
+
+Java:
+ - Process termination which was broken at version 3.21 has been repaired.
+ - Expose host load plugin: loadInit, getCurrentLoad, getComputedFlops, getAvgLoad
+ - Hide the examples into examples/deprecated. New users should use Python.
+
+MSG:
+ - Drop MSG_process_create_from_stdfunc() from the API.
+   This C++ function was a pimple in the C API, made necessary at some
+   point by the Java bindings. This is fixed now.
+ - Hide the examples into examples/deprecated. New users should use S4U.
+ - MSG_process_create and MSG_process_attach now crash if the host used
+   to run this process is off.
+ - Fix the protype of MSG_process_on_exit()
+   Now use (int,void*) callbacks instead of (void*,void*) ones.
+   The implementation was ways too messy to actually work, I guess.
+
+SMPI:
+ - Change the way SMPI_SAMPLE_* macros work to avoid invalidating cache
+   too often and provide more accurate timings.
+ - Add -gdb, -lldb, and -vgdb shortcuts to help debug MPI codes with smpirun
+ - MPI_Alltoallw support
+ - Partial MPI nonblocking collectives implementation: MPI_Ibcast, MPI_Ibarrier,
+   MPI_Iallgather, MPI_Iallgatherv, MPI_Ialltoall, MPI_Ialltoallv, MPI_Igather,
+   MPI_Igatherv, MPI_Iscatter, MPI_Iscatterv, MPI_Ialltoallw.
+ - MPI_Request_get_status, MPI_Status_set_cancelled, MPI_Status_set_elements
+   support
+ - Basic implementation of generalized requests (SMPI doesn't
+   allow MPI_THREAD_MULTIPLE) : MPI_Grequest_complete, MPI_Grequest_start
+
+XBT:
+ - Drop sg_cmdline. Please use xbt_cmdline instead.
+ - Drop the C xbt_os_mutex_t; Use the C++11 std::mutex.
+ - Drop the C xbt_os_sem_t; Use the C++ xbt::OsSemaphore.
+   OsSemaphore is implemented in a portable way with C++11 threads.
+   This should allow much more threads to be created at the same time,
+   allowing Mac and Java users to simulate many more actors.
+ - Implement the 'thread' factory with std::thread instead of xbt ones.
+   It is not possible to set the stack size with threads anymore, but
+   -fsplit-stack is the way to go nowadays when using threads.
+ - Drop the xbt_os_thread_t module (now unused)
+ - Drop xbt_ex_display(), use simgrid::xbt::log_exception() instead.
+ - Drop xbt_str_join_array().
+ - Drop cunit, use Catch2 instead.
+
+Kernel:
+ - Many cleanups in the kernel::activity namespace. This was long
+   overdue, and shall open the path to many future endeavors.
+
+Fixed bugs:
+ - #132: Java: a process can not shut down its own host
+ - #220: S4U: detached send causes exception if sender terminates soon after sending
+ - #261: Document the parameters of parallel execution's constructor
+ - #300: [s4u] BarrierPtr is missing
+ - #314: SMPI args internal cleanup
+ - #316: Fix a bug related to the CPU utilization of multi-core VM
+ - #318: Invalid trace file when using option --cfg=tracing/smpi/display-sizes:yes
+ - #324: S4U: Attempting to create an actor on turned off host segfaults instead of throwing
+ - #325: Turning off a host has different behavior on sleeping actors and computing actors
+
+----------------------------------------------------------------------------
+
+SimGrid (3.21) October 3. 2018
+
+The Restarting Documentation (TRD) Release.
+
+Documentation:
+ - Convert the user manual to Sphinx for improved usability.
+   Unstable version now hosted on https://simgrid.frama.io/simgrid
+   Many glitches remain; stay tuned.
+ - Restrict the Doxygen reference API to the installed header files.
+   (documenting all internals this way is overkill + doxygen scales badly)
+ - New tutorial on S4U (highly inspired from the old MSG one, but with
+   a git repository to fork as a starting point, and a docker image)
+ - Started but not finished a SMPI tutorial inspired from the JLPC'14 one.
+ - The Developper manual is still to be converted (not compiled until then)
+ - Some parts are still missing in this conversion (such as the
+   platform and deployment sections) while others were blindly converted
+   and would need more love (such as the configuration flags).
+   Things will certainly further improve in the future releases.
+
+S4U new features:
+ - Fully reimplement auto_restart mechanism that was utterly broken
+   (fix #22, #131 and #281 that were all very related)
+ - Implement semaphores (fix #303 and #291)
+ - When creating an actor from a function and its parameters,
+   move-only parameters are not allowed anymore, as it would prevent
+   the actor to be restartable if its parameters are consumed on run.
+ - s4u::Io: IOs go asynchronous as activities. New methods in s4u::Storage:
+     - io_init(sg_size_t, s4u::Io::OpType) to create a READ or WRITE asynchronous
+       IO operations that can be started, waited for, or canceled as a regular
+       activity.
+     - read_async(sg_size_t) and write_async(sg_size_t) which are wrappers on
+       io_init() + start()
+
+Tracing:
+ - Rename 'power' and 'power_used' variables into 'speed' and 'speed_used'
+ - New host variable: 'core_count'
+
+XBT:
+ - Remove xbt_os_thread_specific features
+ - Remove portability wrapper to condition variables
+ - Remove xbt_os_thread_yield()
+
+SMPI:
+ - MPICH collective selector now mimics MPICH 3.3b
+ - OpenMPI collective selector now mimics OpenMPI 3.1.2 (default "tuned" setting)
+ - MPI_Init(NULL,NULL) is now allowed
+ - smpi/wtime option now injects time in gettimeofday or clock_gettime calls
+ - Command-line arguments should now be handled properly in Fortran simulations
+ - MPI Attributes and related callbacks should work in Fortran
+ - Apps using C + Fortran should now work
+ - MPI_* calls now check for non MPI_SUCCESS return values and emit warnings
+ - Support MPI_Error_String
+
+Java:
+ - Due to an internal bug, Msg.run() must now be your last line.
+   We hope to fix it in a future release, and we are sorry for the inconvenience.
+
+Fixed bugs:
+ - #22: Process autorestart seem to only work with CAS01 cpus
+ - #56: Feature request: dynamic SMPI replay
+ - #93: simgrid should not eat --help
+ - #111: How to change the loopback link characteristics?
+ - #116: Platform cluster radical
+ - #117: Platform cluster/host order
+ - #129: Replay_multiple on steroid
+ - #131: Java : autostart does not work
+ - #143: Setting a breakpoint at a given time
+ - #235: Network energy models should be integrated
+ - #264: Add ptask L07 resource tracing
+ - #271: Dynamic and manual replay of SMPI traces
+ - #279: Breakpoints option uses time deltas instead of absolute time
+ - #281: Daemonized actor no longer daemonized after an auto-restart
+ - #282: TIT convertor erase traces when using absolute path in the trace list file
+ - #285: segfault when a s4u actor kills itself with msg process tracing activated
+ - #286: Pajé traces are not exposing the number of cores
+ - #287: Command-line parsing should stop when encountering '--'
+ - #288: MPI_Init(NULL, NULL)
+ - #289: Improve documentation of Actor::on_destruction and this_actor::on_exit()
+ - #290: Method to check if a mailbox has a message ready to be consumed
+ - #291: [s4u] semaphores do not seem available yet
+ - #294: Alltoall collective implementation of mpich
+ - #295: Starting a Host as OFF is not supported
+ - #296: DTD too permissive
+ - #299: Add a s4u barrier example
+
+----------------------------------------------------------------------------
+
+SimGrid (3.20) Released June 24. 2018
+
+The proxy snake_case() release.
+
+S4U:
+ - The whole API is now using snake_case() instead of mixing it with camelCase.
+   Compatibility wrappers in place for one year.
+ - We took the opportunity to increase the consistency of the API.
+   Please report any remaining glitches.
+ - New function simgrid::s4u::Host::get_actor_count:
+   Returns the number of actors running on a specific host.
+
+SMPI:
+ - SMPI is now tested with ~45 proxy apps from various sources, with none or
+   only minor patching needed: check https://github.com/simgrid/SMPI-proxy-apps
+ - Replay: The replay file has been re-written in C++.
+ - Replay: Tags used for messages sent via MPI_Send / MPI_Recv are now
+   supported. They are stored in the trace and used when replayed.
+ - Basic support of MPI_Cancel. Robustness not guaranteed.
+ - Support of MPI_Win_allocate_shared, MPI_Win_shared_query, MPI_Comm_split_type
+   (only for MPI_COMM_TYPE_SHARED).
+ - New option: smpi/privatize-libs, to add external shared libs to be privatized
+   by SMPI. They will be copied locally and loaded separately by each process.
+   Example --cfg=smpi/privatize-libs:"libgfortran.so.3;libscalapack.so".
+ - Tracing: add tracing for MPI_Start, Startall, Testall, Testany
+ - Interception of getopt, getopt_long and getopt_long_only calls to avoid issues
+   with internal index optind with multiple processes. Only works if MPI_Init has
+   already been called.
+ - Fortran: SMPI builds a mpi.mod file which should allow use of "use mpi"
+   syntax without preprocessing tricks.
+
+TRACE
+ - Change --cfg=tracing/msg/vm to --cfg=tracing/vm as virtual machine
+   behavior tracing is no longer limited to MSG
+ - TIT (Time Independent Traces): We finally support tags. Unfortunately,
+   this means that traces now need to be updated or re-obtained; both Irecv
+   and Isend lines in your traces have now in total 5 mandatory fields:
+      <rankid> <command> <to/from rankid> <tag> <size>
+   To update your traces, it suffices to add a 0 for the tag here.
+ - TIT now also supports waiting for a distinct request via MPI_Wait.
+   Wait/Test now wait for a specific request, not just the last one that was
+   issued. This unfortunately means another update, because we need to
+   identify which request you want to wait for. We do this via the
+   triplet (sender, receiver, tag), which needs to be added:
+      <rankid> <command> <sender> <receiver> <tag>
+ - Actions are now in lower case (e.g., "allReduce" becomes "allreduce").
+   New script simgrid_convert_TI_traces.py: upgrade your TI traces.
+
+MSG
+ - The deprecation of MSG is ongoing (but this should not impact you).
+   Many MSG functions are now simple wrappers on the C API of S4U. If
+   you wish to convert your code to S4U, find the S4U counterparts of
+   your MSG calls in src/msg/msg_legacy.cpp.
+ - MSG can still be used, but won't evolve anymore.
+
+Plugins:
+ - Allow to run the Link energy plugin from the command line with
+   --cfg=plugin:link_energy
+ - Rename Energy plugin into host_energy
+ - Rename Load plugin into host_load
+
+simix:
+ - Add parameter --cfg=simix/breakpoint to raise a SIGTRAP at given time.
+ - kill simix::onDeadlock() that was somewhat dupplicating s4u::on_deadlock()
+ - Improve performance when handling timeouts of simix synchros.
+
+XBT:
+ - Config: the C API is now deprecated (will be removed in 3.23), and
+           the C++ API has been slightly improved.
+
+Other:
+ - Fix several build issues on OSX.
+ - Move simgrid_config.h to simgrid/config.h (old header still working)
+
+Fixed bugs:
+ - #143: Setting a breakpoint at a given time
+ - #150: Inconsistent event names in SMPI replay
+ - #258: daemonized actors hang after all non-daemonized actors have completed
+ - #267: Linker error on unit_tmgr
+ - #269: SMPI: tracing of MPI_Wait/all/any broken
+ - SMPI: Fix various crashes with combined use of MPI_PROC_NULL and MPI_IGNORE_STATUS
+
+----------------------------------------------------------------------------
+
+SimGrid (3.19.1) Released March 22 2018
+
+ The Fixed ABI Release.
+
+ As you may know, we are currently refactoring SimGrid in deep.
+ Upcoming SimGrid4 will be really different from SimGrid3: modular,
+ standard and extensible vs. layered, homegrown and rigid. C++ vs. C.
+
+ Our goal is to smooth this transition, with backward compatibility
+ and automatic update paths, while still progressing toward SimGrid4.
+
+ SimGrid remains open during works: The last pure SimGrid3 release was
+ v3.12 while all subsequent versions are usable alpha versions of
+ SimGrid4: Existing interfaces remain unchanged, but the new S4U
+ interface is budding and the internals are deeply reorganized.
+
+ Since 2015, we work hard to reduce the changes to public APIs. When
+ we need to rename a public library symbol in S4U, we let your
+ compiler issue an explicative warning when you use the deprecated
+ function. These messages remain for four releases, i.e. for one full
+ year, before turning into an error. Starting with v3.15, your can
+ also adapt to API changes with the SIMGRID_VERSION macro, that is
+ defined to 31500 for v3.15, to 31901 for v3.19.1 and so on.
+
+ Starting with this v3.19.1, our commitment to reduce the changes to
+ the public interfaces is extended from the API to the ABI: a program
+ using only MSG or SimDag and compiled against a given version of
+ simgrid can probably be used with a later version of SimGrid without
+ recompilation. We will do our best... but don't expect too much of
+ it, that's a really difficult goal during such profund refactoring.
+
+ The difference between v3.19 and v3.19.1 is that the former was
+ accidentally breaking the ABI of MSG, while the later is restoring
+ the previous ABI.
+
+ S4U and kernel APIs will still evolve until SimGrid4, with one-year
+ deprecation warnings as currently. In fact, cleaning up these
+ interfaces and converting them to snake_case() is one release goal of
+ v3.20. But don't worry, we are working to smooth this upgrade path.
+
+ In summary, new projects should start with S4U to benefit of the
+ future, but old MSG projects should still be usable with no change.
+
+----------------------------------------------------------------------------
+
+SimGrid (3.19) Released March 20 2018
+
+ The Moscovitly-cold Spring release.
+
+ SMPI user-visible improvements:
+ - Support of MPI_Type_create_subarray
+ - Unimplemented MPI calls now abort (instead of issuing a warning)
+   Some harmless calls around errhandlers still only issue a warning.
+ - MPI_Sendrecv was behaving badly when MPI_PROC_NULL was sender or receiver.
+ - Starting MPI ranks (or even MSG/S4U actors) once the simulation started
+   is now possible (mmap privatization was refactored to this end).
+   Adding new SMPI instances should also be technically doable now.
+
+ SMPI internal cleanups:
+ - Removed index notion from SMPI -- no more "getPid() - 1"!
+   In tracing files, actors are called rank-<PROCESS-ID> but these are
+   NOT the real ranks (tracing several communicators is not supported yet).
+ - Deprecate smpi_process_index() (will be removed in 3.22)
+ - Better testing on classical proxy apps, through an external project:
+   https://github.com/simgrid/SMPI-proxy-apps/
+
+ Documentation
+ - Use a graphical TOC to make it easier to find the documentation you need
+ - Revamp the MSG tutorial
+
+ MSG
+ - Fix MSG_task_get_remaining_work_ratio(): return 1.0 for unstarted tasks.
+ - Remove parameter of MSG_process_killall().
+   Resetting the PID was bogus anyway (several actors could have the same PID).
 
  S4U
- - Execution->setHost() can be called after start() to migrate it.
+ - Execution->setHost() can be called after start(), to migrate it.
  - Comm::test_any() is now implemented.
+ - s4u::Actor now has onCreation() and onDestruction() signals.
+ - Install some kernel header files for the users' plugins and more.
+   Warning, their API is really not stable yet.
+    include/simgrid/kernel/resource/{Action,Resource,Model}.hpp
+    include/simgrid/kernel/routing/*Zone.hpp
+
+ SimDag
+ - SD_task_dependency_add(): remove unused parameters 'name' and 'data'.
+
+ Build System and other cleanups:
+ - Remove unused run-time parameter "tracing/onelink-only".
+ - SimGrid now works with intel compilers (MC still buggy)
+ - Remove XBT_LOG_CONNECT, it should be useless nowadays.
+ - tesh kills subprocesses on timeout (but not on windows)
+
+ PLATFORM:
+ - Rename FULLDUPLEX into SPLITDUPLEX (old name still accepted)
 
  Fixed bugs:
+ - #194: Feature request: simgrid::s4u::Comm::test_any()
  - #245: migrating an actor does not migrate its execution
+ - #253: Feature Request: expose clusters as objects
+ - #254: Something seems wrong with s4u::Actor::kill(aid_t)
+ - #255: Tesh broken on Windows
+ - #256: Modernize FindSimGrid.cmake
+ - #257: Fix (ab)use of CMake install
+
+----------------------------------------------------------------------------
 
 SimGrid (3.18) Released December 24 2017
 
  The "Ho Ho Ho! SimGrid 4 beta is coming to town" release.
 
  MSG IS NOW DEPRECATED. Please use S4U for new projects.
- - Support for MSG should not be removed from SimGrid before 2020, 
+ - Support for MSG should not be removed from SimGrid before 2020,
    but future evolutions will be limited to the integration of
    user-provided patches.
-   
+
  S4U New features
  - s4u::onDeadlock() signal, run before stopping the simulation.
  - s4u::Exec: asynchronous executions (abstraction of background
@@ -29,7 +585,7 @@ SimGrid (3.18) Released December 24 2017
    Mailbox::getCname() instead to get a char*.
  - Storage::getName() changed to return a std::string, use
    Storage::getCname() instead to get a char*.
- - s4u::allStorages() becomes s4u::getStorageList(whereTo) 
+ - s4u::allStorages() becomes s4u::getStorageList(whereTo)
    to have both allocation and deallocation of the map in user space.
 
  MSG
@@ -40,7 +596,7 @@ SimGrid (3.18) Released December 24 2017
  - Both changes fix GitHub's #223 using PR #237 as a basis.
    Thanks Michael Mercier.
  - Most examples were converted to S4U and hidden elsewhere at tests.
-   Rational: we still want MSG to work; we want newcomers to use S4U.
+   Rationale: we still want MSG to work; we want newcomers to use S4U.
 
  SURF
  - LMM stuff moved to its own namespace: simgrid::kernel::lmm.
@@ -53,11 +609,11 @@ SimGrid (3.18) Released December 24 2017
  Virtual Machines
  - Live migration is getting moved to a plugin. Dirty page tracking is
    the first part of this plugin. This imply that VM migration is now
-   only possible if one this function is called :
-    - C/MSG: MSG_vm_live_migration_plugin_init() 
+   only possible if one this function is called:
+    - C/MSG: MSG_vm_live_migration_plugin_init()
     - C/C++: sg_vm_live_migration_plugin_init()
     - Java:  Msg.liveMigrationInit()
-   For C and C++, "simgrid/plugins/live_migration.h" also has to be 
+   For C and C++, "simgrid/plugins/live_migration.h" also has to be
    included.
 
  XBT
@@ -92,13 +648,15 @@ SimGrid (3.18) Released December 24 2017
  - #248: Kill of finished processes leads to segfault
  - #240: xbt_cond_wait_timeout should gracefully return for C apps
  - #239: please implement signal s4u::onDeadlock()
- - #230: segfaults when exit() without run() 
+ - #230: segfaults when exit() without run()
  - #225: s4u::Actor::kill() doesn not really kill victims in a join()
  - #223: MSG_task_get_flops_amount() not working with parallel tasks
- - #222: Actor::kill() doesn't really kill and segfaults 
- - #221: odd LMM warning when killing an actor 
+ - #222: Actor::kill() doesn't really kill and segfaults
+ - #221: odd LMM warning when killing an actor
  - #120: Memory leak when the processes are forcefully killed
 
+----------------------------------------------------------------------------
+
 SimGrid (3.17) Released October 8 2017
 
  The Drained Leaks release: (almost) no known leaks despite the tests.
@@ -202,12 +760,12 @@ SimGrid (3.16) Released June 22. 2017.
  SMPI
   - New algorithm to privatize globals: dlopen, with dynamic loading tricks
   - New option: smpi/keep-temps to not cleanup temp files
-  - New option : smpi/shared-malloc-blocksize . Relevant only when global shared
+  - New option: smpi/shared-malloc-blocksize . Relevant only when global shared
     mallocs mode is used, allows to change the size of the fake file used
     (default 1MB), to potentially limit the number of mappings for large runs.
   - Support for sparse privatized malloc with SMPI_PARTIAL_SHARED_MALLOC()
   - Fortran ifort and flang compilers support
-  - New RMA calls supported (experimental) :
+  - New RMA calls supported (experimental):
       - MPI_Win_allocate, MPI_Win_create_dynamic, MPI_Win_attach
       - MPI_Win_detach, MPI_Win_set_info, MPI_Win_get_info
       - MPI_Win_lock_all, MPI_Win_unlock_all, MPI_Win_flush
@@ -368,9 +926,9 @@ SimGrid (3.14) Released December 24. 2016
 
  * smpirun script should be (much) faster for large deployments.
 
- * SMPI tracing : fixed issue with poor matching of send/receives.
+ * SMPI tracing: fixed issue with poor matching of send/receives.
 
- * Replay : Fix broken waitall
+ * Replay: Fix broken waitall
 
  New functions and features
  * MSG_parallel_task_execute_with_timeout, to timeout computations.
@@ -392,11 +950,11 @@ SimGrid (3.14) Released December 24. 2016
  * VM I/O related things:
    - Ignored parameter of vm_create: core_nb, disk_path and disk_size.
    - Unimplemented save/restore methods
- * MSG_as_router_get_property_value() was redundent with
+ * MSG_as_router_get_property_value() was redundant with
    MSG_environment_as_get_property_value().
    - Removed MSG_as_router_*propert*() functions
    - Added MSG_environment_as_set_property_value() for consistency
- * xbt heterogeneous dictionnaries (created with xbt_dict_new()).
+ * xbt heterogeneous dictionaries (created with xbt_dict_new()).
    Well, they are still there for now, but deprecated with a warning.
    Please switch to xbt_dict_new_homogeneous() before this is removed
    for real.
@@ -486,7 +1044,7 @@ SimGrid (3.13) stable; urgency=low
      flops that a <host>, <peer>, <cluster> or <cabinet> can deliver per second.
    - In <trace_connect>, attribute kind="POWER" is now kind="SPEED".
    - In <host> and <link>, attributes availability and state are gone.
-     It was redundent with state and availability traces, and with peak values.
+     It was redundant with state and availability traces, and with peak values.
    - In <cluster>, attributes availability_file and state_file are gone.
      It was too complex and unused.
    - Kill <gpu>. Was not doing anything.
@@ -622,7 +1180,7 @@ SimGrid (3.12) stable; urgency=low
 
  SMPI:
  * New functions
-   - Onesided early support for : MPI_Win_(create, free, fence, get_name, set_name, get_group), MPI_Get, MPI_Put, MPI_Accumulate, MPI_Alloc_mem, MPI_Free_mem.
+   - Onesided early support for: MPI_Win_(create, free, fence, get_name, set_name, get_group), MPI_Get, MPI_Put, MPI_Accumulate, MPI_Alloc_mem, MPI_Free_mem.
    - MPI_Keyval*, MPI_Attr* functions, as well as MPI_Comm_attr*, MPI_Type_attr* variants (C only, no Fortran support yet)
    - MPI_Type_set_name, MPI_Type_get_name
    - MPI_*_c2f and MPI_*_f2c functions
@@ -631,13 +1189,13 @@ SimGrid (3.12) stable; urgency=low
    - Activate a lot of new tests from the mpich 3 testsuite
  * Features
    - Constant times can be injected inside MPI_Wtime and MPI_Test through options smpi/wtime and smpi/test
-   - InfiniBand network model added : Based on the works of Jerome Vienne
+   - InfiniBand network model added: Based on the works of Jerome Vienne
      http://mescal.imag.fr/membres/jean-marc.vincent/index.html/PhD/Vienne.pdf
    - When smpi/display_timing is set, also display global simulation time and application times
    - Have smpirun, smpicc and friends display the simgrid git hash version on --git-version
  * Collective communications
    - SMP-aware algorithms are now dynamically handled. An internal communicator is created for each node, and an external one to handle communications between "leaders" of each node
-   - MVAPICH2 (1.9) collective algorithms selector : normal and SMP algorithms are handled, and selection logic is based on the one used on TACC's Stampede cluster (https://www.tacc.utexas.edu/stampede/).
+   - MVAPICH2 (1.9) collective algorithms selector: normal and SMP algorithms are handled, and selection logic is based on the one used on TACC's Stampede cluster (https://www.tacc.utexas.edu/stampede/).
    - Support for Rabenseifner Reduce/Allreduce algorithms (https://fs.hlrs.de/projects/par/mpi//myreduce.html)
  * Replay
    - Replay now uses algorithms from wanted collective selector
@@ -645,7 +1203,7 @@ SimGrid (3.12) stable; urgency=low
    - Memory occupation of replay should now be contained (temporary buffers allocated in collective algorithms should be shared between processes)
    - Replay can now replay several traces at the same time (check examples/smpi/replay_multiple example), to simulate interactions between several applications on a given platform. User can specify the start time of each instance. This should also allow replay + actual applications to run.
  * Bug fixes
-   - [#17799] : have mpi_group_range_incl and mpi_group_range_excl better test some corner cases
+   - [#17799]: have mpi_group_range_incl and mpi_group_range_excl better test some corner cases
    - Correctly use loopback on fat-tree clusters
    - Asynchronous small messages shouldn't trigger deadlocks anymore
  * Energy/DVFS cleanup and improvement
@@ -671,7 +1229,7 @@ SimGrid (3.12) stable; urgency=low
   * New functions
    - Add a xbt_heap_update function, to avoid costly xbt_heap_remove+xbt_heap_insert use
    - Add a xbt wrapper for simcall_mutex_trylock (asked in [#17878])
-   - Add two new log appenders : rollfile and splitfile. Patch by Fabien Chaix.
+   - Add two new log appenders: rollfile and splitfile. Patch by Fabien Chaix.
    - xbt_dirname and xbt_basename for non-POSIX systems
  MC
   * The model checker now runs as a separate process.
@@ -772,18 +1330,18 @@ SimGrid (3.11) stable; urgency=low
    one node.
  * Collective communication algorithms should not crash if used with
    improper number of nodes and report the error.
- * SMPI now partially supports MPI_Topologies : MPI_Cart_create, MPI_Cart_shift,
+ * SMPI now partially supports MPI_Topologies: MPI_Cart_create, MPI_Cart_shift,
    MPI_Cart_rank, MPI_Cart_get, MPI_Cart_coords, MPI_Cartdim_get,
    MPI_Dims_create, MPI_Cart_sub are supported.
  * New interface to use SMPI programmatically (still depends on MSG for
-   some parts, see examples/smpi/smpi_msg_masterslave) :
+   some parts, see examples/smpi/smpi_msg_masterslave):
    - SMPI_app_instance_register(const char *name, xbt_main_func_t code,
         int num_processes)
    - SMPI_init()
    - SMPI_finalize();
  * Global variables privatization in MPI executables is now performed at runtime
    with the option smpi/privatize_global_variables (default:no).
-   Limitations : Linux/BSD only, with mmap enabled. Global variables inside
+   Limitations: Linux/BSD only, with mmap enabled. Global variables inside
    dynamic libraries loaded by the application are not privatized (static
    linking with these libraries is advised in this case)
 
@@ -858,7 +1416,7 @@ SimGrid (3.10) stable; urgency=low
    - allows to select one in particular with --cfg=smpi/coll_name:algorithm
    - allows to use the decision logic of OpenMPI(1.7) or MPICH(3.0.4) by setting
      --cfg=smpi/coll_selector:(mpich/ompi)
- * Support for new functions : MPI_Issend, MPI_Ssend, Commutative operations in
+ * Support for new functions: MPI_Issend, MPI_Ssend, Commutative operations in
    Reduce
  * Add a --cfg:tracing/smpi/internals option, to trace internal communications
    happening inside a collective SMPI call.
@@ -1069,7 +1627,7 @@ SimGrid (3.8) stable; urgency=low
    by a SD_TASK_COMM_E2E typed task. This rate depends on both the nominal
    bandwidth on the route onto which the task is  scheduled and the amount of
    data to transfer.
-   To divide the nominal bandwidth by 2, the rate then has to be :
+   To divide the nominal bandwidth by 2, the rate then has to be:
                      rate = bandwidth/(2*amount)
  * Compute tasks that have failed can now be rescheduled and executed again
    (from their beginning)
@@ -1127,7 +1685,7 @@ SimGrid-java (3.8.1) stable; urgency=low
  * New module: org.simgrid.msg.File (SimGrid File management functions)
  * New Module: org.simgrid.msg.VM (SimGrid interface to mimick IAAS clouds)
  * Change the meaning of Process.restart: now restart the process from
-   the begining, like MSG_process_restart in C.
+   the beginning, like MSG_process_restart in C.
  * Add Process.setAutoRestart: handling of process restart when failed
    host comes back.
  * Add Process.getProperty, Host.getProperty, Host.getProperty: allows
@@ -1764,7 +2322,7 @@ SimGrid (3.4.1) stable; urgency=low
  * Fix a bug preventing the tasks from begin garbage collected.
 
  MSG
- * Fix a bug occuring when a host involved in a communication fails.
+ * Fix a bug occurring 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.
 
@@ -1888,7 +2446,7 @@ SimGrid (3.4) stable; urgency=low
     o network_model -> network/model
     o workstation_model -> workstation/model
   * New configuration variables:
-    o network/bandwidth_factor: correction to bandwith
+    o network/bandwidth_factor: correction to bandwidth
     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
@@ -2007,7 +2565,7 @@ SimGrid (3.3.4) stable; urgency=low
     - 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_dump() for debugging 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
@@ -2145,7 +2703,7 @@ SimGrid (3.3.2) stable; urgency=low
       action_free ~> action_unref
       action_change_state ~> action_state_set
       action_get_state    ~> action_state_get
-    - Change model methods into functions :
+    - Change model methods into functions:
       (model)->common_public->action_use  ~> surf_action_ref
 
   * Implement a generic resource; use it as ancestor to specific ones
@@ -2265,7 +2823,7 @@ SimGrid (3.3.1) stable; urgency=low
      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
+  * Add an example 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,
@@ -2363,7 +2921,7 @@ SimGrid (3.3) stable; urgency=high
     **************************************
     *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
+    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. Sorry for the inconvenience.
@@ -2540,7 +3098,7 @@ SimGrid (3.2) stable; urgency=high
          . Lesson 8: Handling errors through exceptions
          . Lesson 9: Exchanging simple data
          . Lesson 10: Remote Procedure Calling (RPC)
-         . Lesson 11: Explicitely waiting for messages
+         . Lesson 11: Explicitly waiting for messages
          . Recapping of message passing features in GRAS
      - A HOWTO section containing:
        o HOWTO design a GRAS application
@@ -2576,7 +3134,7 @@ SimGrid (3.1) stable; urgency=high
   * 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
+    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
@@ -2633,7 +3191,7 @@ SimGrid (3.1) stable; urgency=high
     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]
+  * New function: xbt_backtrace_display(). Sweet while debugging [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]
@@ -2667,7 +3225,7 @@ SimGrid (3.0.1) stable; urgency=low
     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]
+    and why they come from when they are not caught in time [AL, MQ]
 
   SURF:
   * Bugfix: Do repport the error when two non-connected hosts try to
@@ -2716,7 +3274,7 @@ SimGrid (3.0.1) stable; urgency=low
      - 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
+     - allows the receiver to proceed with the beginning of the stream before
        everything is arrived
      - make it possible to build an iov transport (using readv/writev)
     Extra difficulty:
@@ -2759,7 +3317,7 @@ SimGrid (2.96) unstable; urgency=low
   * New! Exception handling with setjmp or such (code from OSSP ex) [MQ]
     This deprecates the xbt_error_t mechanisms.
     It modifies (simplifies) all XBT and GRAS API.
-    MSG API keeps unchanged (exceptions raised by XBT are catched from
+    MSG API keeps unchanged (exceptions raised by XBT are caught from
      within MSG and masked with existing error handling facilities)
 
   SURF:
@@ -3037,7 +3595,7 @@ SimGrid (2.90) unstable; urgency=low
   * 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.
+    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
@@ -3052,7 +3610,7 @@ SimGrid (2.90) unstable; urgency=low
 
   * 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 :
+    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
@@ -3130,7 +3688,7 @@ SimGrid (2.90) unstable; urgency=low
       - s_toto   is a structure needing 'struct' keyword to be used
       - e_toto_t is an enum
       -   toto_t is an 'object' (struct*)
-    Exemple:
+    Example:
       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
@@ -3256,7 +3814,7 @@ SimGrid (2.90) unstable; urgency=low
   - 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
+    dictionaries. 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.
@@ -3494,7 +4052,7 @@ SimGrid (2.90) unstable; urgency=low
     for now.
  [Transport]
    [File plugin]
-     - Bugfix when using a filename explicitely (instead of '-')
+     - Bugfix when using a filename explicitly (instead of '-')
 
 2004-04-09 Martin Quinson
  [Transport plugins]