Version 3.0.0

Changelog from v2.0.0 is below. Also available on

Changed (**breaks protocol**)

- Removal of the ``NOP`` event.
- ``SUBMIT_PROFILE`` has been renamed :ref:`proto_REGISTER_PROFILE`.
  Trying to register an already existing profile will now fail.
- ``SUBMIT_JOB`` has been renamed :ref:`proto_REGISTER_JOB`.
  Trying to register an already existing job will now fail.
  The possibility to register profiles from within a :ref:`proto_REGISTER_JOB` event has been discarded.
  Now use :ref:`proto_REGISTER_PROFILE` then :ref:`proto_REGISTER_JOB`.
- The :ref:`proto_SIMULATION_BEGINS` event has been changed:

  - The ``resources_data`` array has been split into
    the ``compute_resources`` and ``storage_resources`` arrays.
  - The content of the ``config`` object has been flattened and now contains the following keys:
    ``redis-enabled``, ``redis-hostname``, ``redis-port``, ``redis-prefix``, ``profiles-forwarded-on-submission``, ``dynamic-jobs-enabled`` and ``dynamic-jobs-acknowledged``.
- The ``submission_finished`` :ref:`proto_NOTIFY` event has been renamed ``registration_finished``.
- The ``continue_submission`` :ref:`proto_NOTIFY` event has been renamed ``continue_registration``.

Changed (**breaks command-line interface**)

- Removal of the ``--config-file`` option.
  Everything should now be doable via the Batsim CLI.
- Removal of the ``--enable-sg-process-tracing`` option.
  You can now use ``--sg-cfg`` to do the same.
- ``--batexec`` has been renamed ``--no-sched``.
- ``--allow-time-sharing`` has been split into two options
  ``--enable-compute-sharing`` and ``--disable-storage-sharing``,
  as resource roles have been introduced.

Changed (**breaks workload format**)

- Profile types using parallel tasks have been renamed:

  - ``msg_par`` into ``parallel`` (see :ref:`profile_parallel`)
  - ``msg_par_hg`` into ``parallel_homogeneous`` (see :ref:`profile_parallel_homogeneous`)
  - ``msg_par_hg_tot`` into ``parallel_homogeneous_total`` (see :ref:`profile_parallel_homogeneous_total`)
  - ``msg_par_hg_pfs`` into ``parallel_homogeneous_pfs`` (see :ref:`profile_parallel_homogeneous_pfs`)

Changed (**breaks platform format**)

- Batsim now uses SimGrid version **TO BE DEFINED** and therefore the
  SimGrid platform version 4.1, which broke things on how to define platforms.
  Please refer to SimGrid documentation for more information on this.

Changed (jobs/schedule output file format)

- **Breaks**: The columns ``requested_number_of_processors`` and ``allocated_processors`` have been respectively renamed ``requested_number_of_resources`` and ``allocated_resources`` in the jobs output file.
- **Breaks**: The order of the columns has changed in the jobs output file.
- The columns ``final_state`` and ``profile`` have been added in the jobs output file.
- The rejected jobs are now present in the jobs and the schedule output files.

Changed (new dependencies)

- `docopt-cpp`_ and pugixml_ are now external dependencies and no longer provided with Batsim sources.
- New intervalset_ dependency, which replaces the previous ``MachineRange`` class.
- batexpe_ is now an optional dependency to test batsim.

Added (protocol)

- Addition of the ``no_more_static_job_to_submit`` :ref:`proto_NOTIFY` event,
  which is sent by Batsim when all the jobs described in the static
  workloads/workflows have been submitted.
- Addition of the ``profiles`` object in the :ref:`proto_SIMULATION_BEGINS` event.
  The key is the workload_id and the value is the list of profiles of that workload.
- Addition of the optional ``storage_mapping`` object in the :ref:`proto_EXECUTE_JOB` event,
  which allows to define which resource id should be used for a named IO resource.
- Addition of the optional ``additional_io_job`` object in the :ref:`proto_EXECUTE_JOB` event,
  which allows to add IO movements to a job execution.
  This is done by merging a traditional parallel task (within the allocated hosts that *compute* the job)
  with another parallel task that define IO movements (within the allocated hosts that compute the jobs, but also potentially with IO resources).

Added (platform format)

- Roles can now be specified for the hosts of a platform.
  This is done by setting the ``role`` XML property of a host.
  A default master host can be specified this way by using the ``master`` role value.
  The ``storage`` value is for hosts that describe storage resources ; such hosts are allowed to send and receive bytes but not to compute.
  The ``compute_node`` value (used by default if no role is specified) is for hosts that describe computing resources that can both compute and communicate.
  More information in :ref:`platform_host_roles`.

Added (command-line interface)

- New ``--add-role-to-hosts`` option, that allows to add a role to some hosts.
- New ``--sg-cfg`` option, that allows to set SimGrid configuration options.
- New ``--sg-log`` option, that allows to set SimGrid logging options.
- New ``--dump-execution-context`` option,
  that dumps the command execution context on the standard output.
  This allows external tools to understand the execution context of a batsim command without actually parsing it.

Known issues

- Killing jobs may now crash in some (corner-case) situations.
  This happens since Batsim upgraded its SimGrid version.
  Tracked on `issue 37 (inria) <>`_.
- SMPI profiles only handle relative trace filenames.
  Tracked on `issue 97 (inria) <>`_.
- Batsim does not check job size correctly when executed with ``--no-sched``.
  Tracked on `issue 70 (inria) <>`_.

- Various bug fixes.
- Removed the python experiment scripts that were located in ``tools/experiments``,
  as robin_ became the standard tool to execute Batsim experiments.
- Removed git submodules. Please now use schedulers directly from their repositories or from kapack_.
- Removed dependencies to GMP and cppzmq.
- Batsim now mainly uses the s4u SimGrid interface.
  If you used to set SimGrid configuration/logging options through Batsim CLI,
  the name of such options should therefore have changed.
- Documentation moved to readthedocs.
- The ``workload_profiles`` directory has been renamed ``workloads``.
- New generator for heteregenous platforms (code and documentation in ``platforms/heterogeneous``).
- New demo (in ``demo/``).
This tag has no release notes.