Home My Page Projects SimGrid
Summary Activity Tracker Lists Docs News SCM Files

Project Filelist for SimGrid

File Release Notes and Changelog

Release Name: 3.13

Release Notes
The Half Release, a.k.a. the Zealous Easter Trim.

 * Half of the lines of code are gone.
   - v3.12: 286k lines; v3.13: 142k lines (+ comments)
   - Experimental untested unused "features" removed
   - We rewrote several parts in C++ instead of C

 * Introducing v4 of the XML platform format
   - Many long-due cleanups (details in the Changelog)

 * MSG examples fully reorganized (in C and Java)

 * The S4U interface is rising, toward SimGrid 4
   - All host manipulations now done in S4U
   - SimDag was mostly rewritten on top of S4U
   - MSG & SimDag interfaces mostly unchanged
Change Log
 The Half Release, a.k.a. the Zealous Easter Trim.
 - We removed half of the lines, that were mostly experimental cruft.
   v3.12 lasted 286000 lines of code, v3.13 is only 142000 lines
   (not counting blanks and comments -- according to openhub.net)
 - The internals are now compiled in C++ (and will soon be clean C++)
 - We removed 75 klines of XML, 12 klines of Java, 5 klines of cmake, 
   59 klines of C, etc. We added only 29 klines of C++ in replacement.
 * Backwards Compatibility breaks
   - Removed Lua simulation bindings (switch to C or Java for that).
     Lua can still be used to describe platforms
   - Removed Java kernel plug-ins.
     Will be reintroduced after the ongoing major internals reorg.
   - In MSG
      - the following functions were removed.
        They were too specific and should be reimplemented in a generic
        way, with filter function.
          - MSG_task_listen_from_host
          - MSG_mailbox_get_count_host_waiting_tasks
          - MSG_mailbox_put_with_timeout was removed. 
            Please use MSG_task_send_with_timeout instead.
   - In SimDag 
      - the SD_application_reinit function was removed. It has been a noop for a while. 
      - The ACCESS_MODE of SD_workstation has been removed. This feature was not really usable and should soon be 
        replaced by a more flexible mechanism.
      - The following functions thus do not exist anymore
         - SD_workstation_get_access_mode
         - SD_workstation_set_access_mode
         - SD_workstation_get_current_task
      - Basic estimation functions have been removed but can easily be replaced
        - SD_route_get_communication_time => SG_route_get_latency() + amount / SD_route_get_bandwidth()
        - SD_workstation_get_computation_time => amount / sg_host_speed()
   - In Java
      - VM.setBound(int load) is now VM.setBound(double bound) to meet the MSG semantics. 
        Use VM.getSpeed()*load/100 for the legacy behavior.
   - In CMake
      - option enable_tracing was removed. It was not doing anything for a while.
   - In the ModelChecker:
      - the model-checker now ptraces the model-checked process which means
        you cannot use a debugger on the latter anymore (we might make this
        optional in the feature);
      - removed soft-dirty page tracking;
      - remove model-checked side snapshot management,
        MC_snapshot() and MC_compare_snapshot();
      - keep the MC_cut() function as a stub (it was not really working
        in the previous release).

 * All options are consistently in kebab-case. Old names are kept as alias.

 XML platforms:
 * Switch to platform v4 format.
   - Rename from 'power' to 'speed' the attributes describing the amount of
     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.
   - In <cluster>, attributes availability_file and state_file are gone.
     It was too complex and unused.
   - Kill <gpu>. Was not doing anything.
   - The DOCTYPE points to the right URL:
     (the file at this address now documents the changelog since its v1)
   - A warning is emitted for unit-less values (they are still accepted).
     - speed. Default: 'f' or 'flops'. Also defined:
        'Yf',         'Zf',         'Ef',       'Pf',        'Tf',        'Gf',        'Mf',        'kf'
        'yottaflops', 'zettaflops', 'exaflops', 'petaflops', 'teraflops', 'gigaflops', 'megaflops', 'kiloflops'
     - bandwidth. Default: 'Bps' bytes per second (or 'bps' for bits but 1 Bps = 8 bps)
       Also defined in bytes: 'TiBps', 'GiBps', 'MiBps', 'KiBps', 'TBps', 'GBps', 'MBps', 'kBps', 'Bps'
       And the same in bits:  'Tibps', 'Gibps', 'Mibps', 'Kibps', 'Tbps', 'Gbps', 'Mbps', 'kbps', 'bps'
     - latency. Default: 's' second. Also defined:
       'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond
 * bin/simgrid_update_xml can upgrade your files automatically (won't convert unit-less values)
   tools/sg_xml_unit_converter.py may help (but it's just a warning and will probably ever be).

 * s4u::Host is now the preferred public interface to the Host features.
   sg_host_* functions are C bindings to the exact same behavior
   MSG_host_* and SD_workstation_* are #define to the sg_host_* ones

 * The examples were completely reorganized (in C and Java), for your browsing pleasure.
 * Kill all deprecated functions (the ones you had when declaring MSG_DEPRECATED). 
   They were deprecated since a few years, and probably did not even compile anymore.

 * The API has been profoundly modified to directly use the core objects instead of redefining its own. 
   SD_Workstation_t and SD_link_t are now sg_host_t and sg_link_t respectively.
   Some functions have also been renamed for consistency. Backward compatibility is maintained, but users are 
   encouraged to update their codes. A list of the modified functions can be found at the end of 

 * simgrid::simix::kernel() is the closure callback. It ensures that
    the lambda or closure passed as a parameter will run in kernel mode.
   All the callback functions should be rewritten to that interface at some point.

 * Reorganizing and cleaning the internals all around the place.

 * Remove old default barrier/bcast buggy algorithms (see #18407)
 * Various bug fixes to handle more codes
 * Remove the need for the --foreground option of smpirun (it is still
   accepted for backward compatibility).

 * Kill the setset data container: MC don't use it anymore.
 * Kill the queue data container: it made more sense with GRAS.
 * Kill the xbt_peer_t data type: it's useless without GRAS.
 * Kill rm_cb feature of config sets: it was never useful.
 * Kill graphxml parsing feature. It was not used.
 * Kill the deprecated code protected by XBT_USE_DEPRECATED
 * New functions:
   - xbt_dynar_sort_strings(), when the content is char*
   - xbt_str_parse_int / xbt_str_parse_double, wrapping strtol/strtod
     They throw exceptions on invalid input;
 * C++ support for declaring CLI flags (simgrid::config::Flag);
 * class for abstracting different signal backends (simgrid::xbt::signal).
   with no external dependencies (we need very simple signals).

 * refactoring and cleanup of the code;
 * ongoing process to cleanly separate the model-checking algorithms
   from the code model-checking support.