Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Storage-kill: no more check disk attachement
[simgrid.git] / docs / source / app_s4u.rst
index f66286e..72ce3ef 100644 (file)
@@ -169,10 +169,6 @@ use  :cpp:func:`s4u::Activity::wait_for() <simgrid::s4u::Activity::wait_for>`.
 Finally, to wait at most until a specified time limit, use
 :cpp:func:`s4u::Activity::wait_until() <simgrid::s4u::Activity::wait_until>`.
 
-.. todo::
-
-   wait_for and wait_until are currently not implemented for Exec and Io activities.
-
 Every kind of activity can be asynchronous:
 
   - :ref:`s4u::CommPtr <API_s4u_Comm>` are created with 
@@ -191,7 +187,7 @@ communications ongoing.  First, you have to declare a vector in which
 we will store the ongoing communications. It is also useful to have a
 vector of mailboxes.
 
-.. literalinclude:: ../../examples/s4u/async-waitall/s4u-async-waitall.cpp
+.. literalinclude:: ../../examples/s4u/comm-waitall/s4u-comm-waitall.cpp
    :language: c++
    :start-after: init-begin
    :end-before: init-end
@@ -203,7 +199,7 @@ Finally, the actor waits for the completion of all of them at once
 with 
 :cpp:func:`s4u::Comm::wait_all() <simgrid::s4u::Comm::wait_all>`.  
      
-.. literalinclude:: ../../examples/s4u/async-waitall/s4u-async-waitall.cpp
+.. literalinclude:: ../../examples/s4u/comm-waitall/s4u-comm-waitall.cpp
    :language: c++
    :start-after: put-begin
    :end-before: put-end
@@ -251,8 +247,8 @@ at a given point of time).
 
 A big difference with TCP sockets or MPI communications is that
 communications do not start right away after a
-:cpp:func:`Mailbox::put() <simgrid::s4u::Mailbox::put()>`, but wait
-for the corresponding :cpp:func:`Mailbox::get() <simgrid::s4u::Mailbox::get()>`.
+:cpp:func:`Mailbox::put() <simgrid::s4u::Mailbox::put>`, but wait
+for the corresponding :cpp:func:`Mailbox::get() <simgrid::s4u::Mailbox::get>`.
 You can change this by :ref:`declaring a receiving actor <s4u_receiving_actor>`.
 
 A big difference with twitter hashtags is that SimGrid does not
@@ -264,8 +260,8 @@ A big difference with the ZeroMQ queues is that you cannot filter
 on the data you want to get from the mailbox. To model such settings
 in SimGrid, you'd have one mailbox per potential topic, and subscribe
 to each topic individually with a 
-:cpp:func:`get_async() <simgrid::s4u::Mailbox::get_async()>` on each mailbox.
-Then, use :cpp:func:`Comm::wait_any() <simgrid::s4u::Comm::wait_any()>` 
+:cpp:func:`get_async() <simgrid::s4u::Mailbox::get_async>` on each mailbox.
+Then, use :cpp:func:`Comm::wait_any() <simgrid::s4u::Comm::wait_any>` 
 to get the first message on any of the mailbox you are subscribed onto.
 
 The mailboxes are not located on the network, and you can access
@@ -321,7 +317,7 @@ announced (it waits until both :cpp:func:`put() <simgrid::s4u::Mailbox::put()>`
 and :cpp:func:`get() <simgrid::s4u::Mailbox::get()>` are posted). 
 In TCP, since you establish connections beforehand, the data starts to
 flow as soon as the sender posts it, even if the receiver did not post
-its :cpp:func:`recv() <simgrid::s4u::Mailbox::recv()>` yet. 
+its :cpp:func:`put() <simgrid::s4u::Mailbox::put()>` yet. 
 
 To model this in SimGrid, you can declare a specific receiver to a
 given mailbox (with the function 
@@ -336,7 +332,7 @@ garbage-collected. If your simulation creates many short-lived actors
 that marked as permanent receiver, you should call
 ``mailbox->set_receiver(nullptr)`` by the end of the actors so that their
 memory gets properly reclaimed. This call should be at the end of the
-actor's function, not in a on_exit callback.
+actor's function, not in an on_exit callback.
 
 .. _s4u_raii:
 
@@ -368,7 +364,7 @@ Here is a little example:
 
 Note that Mailboxes, Hosts and Links are not handled thought smart
 pointers (yet?). This means that it is currently impossible to destroy a
-mailbox or a link. You can still destroy an host (but probably
+mailbox or a link. You can still destroy a host (but probably
 shouldn't), using :cpp:func:`simgrid::s4u::Host::destroy`.
 
 .. THE EXAMPLES
@@ -448,8 +444,9 @@ Creating actors
 
    .. group-tab:: C
 
+      .. autodoxymethod:: sg_actor_create(const char *name, sg_host_t host, xbt_main_func_t code, int argc, const char *const *argv)
       .. autodoxymethod:: sg_actor_init(const char *name, sg_host_t host)
-      .. autodoxymethod:: sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, char **argv)
+      .. autodoxymethod:: sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, const char *const *argv)
 
       .. autodoxymethod:: sg_actor_attach(const char *name, void *data, sg_host_t host, xbt_dict_t properties)
       .. autodoxymethod:: sg_actor_detach()
@@ -492,7 +489,7 @@ Querying info
       .. autodoxymethod:: simgrid::s4u::Actor::get_host
       .. autodoxymethod:: simgrid::s4u::Actor::set_host
 
-      .. autodoxymethod:: simgrid::s4u::Actor::get_refcount()
+      .. autodoxymethod:: simgrid::s4u::Actor::get_refcount
       .. autodoxymethod:: simgrid::s4u::Actor::get_impl
 
    .. group-tab:: Python
@@ -513,8 +510,8 @@ Querying info
       .. autodoxymethod:: sg_actor_get_host(const_sg_actor_t actor)
       .. autodoxymethod:: sg_actor_set_host(sg_actor_t actor, sg_host_t host)
 
-      .. autodoxymethod:: sg_actor_data(const_sg_actor_t actor)
-      .. autodoxymethod:: sg_actor_data_set(sg_actor_t actor, void *userdata)        
+      .. autodoxymethod:: sg_actor_get_data(const_sg_actor_t actor)
+      .. autodoxymethod:: sg_actor_set_data(sg_actor_t actor, void *userdata)
 
 Suspending and resuming actors
 ------------------------------
@@ -525,7 +522,7 @@ Suspending and resuming actors
 
       .. autodoxymethod:: simgrid::s4u::Actor::suspend()
       .. autodoxymethod:: simgrid::s4u::Actor::resume()
-      .. autodoxymethod:: simgrid::s4u::Actor::is_suspended()
+      .. autodoxymethod:: simgrid::s4u::Actor::is_suspended
 
    .. group-tab:: Python
 
@@ -537,7 +534,7 @@ Suspending and resuming actors
 
       .. autodoxymethod:: sg_actor_suspend(sg_actor_t actor)
       .. autodoxymethod:: sg_actor_resume(sg_actor_t actor)
-      .. autodoxymethod:: sg_actor_is_suspended(sg_actor_t actor)
+      .. autodoxymethod:: sg_actor_is_suspended(const_sg_actor_t actor)
 
 Specifying when actors should terminate
 ---------------------------------------
@@ -549,7 +546,7 @@ Specifying when actors should terminate
       .. autodoxymethod:: simgrid::s4u::Actor::kill()
       .. autodoxymethod:: simgrid::s4u::Actor::kill_all()
       .. autodoxymethod:: simgrid::s4u::Actor::set_kill_time(double time)
-      .. autodoxymethod:: simgrid::s4u::Actor::get_kill_time()
+      .. autodoxymethod:: simgrid::s4u::Actor::get_kill_time
 
       .. autodoxymethod:: simgrid::s4u::Actor::restart()
       .. autodoxymethod:: simgrid::s4u::Actor::daemonize()
@@ -571,6 +568,7 @@ Specifying when actors should terminate
 
       .. autodoxymethod:: sg_actor_restart(sg_actor_t actor)
       .. autodoxymethod:: sg_actor_daemonize(sg_actor_t actor)
+      .. autodoxymethod:: sg_actor_is_daemon
 
 .. _API_s4u_Actor_end:
 
@@ -582,8 +580,8 @@ Reacting to the end of actors
    .. group-tab:: C++
 
       .. autodoxymethod:: simgrid::s4u::Actor::on_exit
-      .. autodoxymethod:: simgrid::s4u::Actor::join()
-      .. autodoxymethod:: simgrid::s4u::Actor::join(double timeout)
+      .. autodoxymethod:: simgrid::s4u::Actor::join() const
+      .. autodoxymethod:: simgrid::s4u::Actor::join(double timeout) const
       .. autodoxymethod:: simgrid::s4u::Actor::set_auto_restart(bool autorestart)
 
    .. group-tab:: Python
@@ -592,7 +590,7 @@ Reacting to the end of actors
 
    .. group-tab:: C
 
-      .. autodoxymethod:: sg_actor_join(sg_actor_t actor, double timeout)
+      .. autodoxymethod:: sg_actor_join(const_sg_actor_t actor, double timeout)
       .. autodoxymethod:: sg_actor_set_auto_restart(sg_actor_t actor, int auto_restart)
 
 Signals
@@ -604,6 +602,7 @@ Signals
 
       .. autodoxyvar:: simgrid::s4u::Actor::on_creation
       .. autodoxyvar:: simgrid::s4u::Actor::on_suspend
+      .. autodoxyvar:: simgrid::s4u::Actor::on_host_change
       .. autodoxyvar:: simgrid::s4u::Actor::on_resume
       .. autodoxyvar:: simgrid::s4u::Actor::on_sleep
       .. autodoxyvar:: simgrid::s4u::Actor::on_wake_up
@@ -643,8 +642,8 @@ Querying info
 
    .. group-tab:: C
 
-      .. autodoxymethod:: sg_actor_self_data()
-      .. autodoxymethod:: sg_actor_self_data_set(void *data)
+      .. autodoxymethod:: sg_actor_self_get_data()
+      .. autodoxymethod:: sg_actor_self_set_data(void *data)
       .. autodoxymethod:: sg_actor_self_get_name()
       .. autodoxymethod:: sg_actor_self_get_pid()
       .. autodoxymethod:: sg_actor_self_get_ppid()
@@ -666,6 +665,10 @@ Suspending and resuming
       .. autofunction:: simgrid.this_actor.suspend
       .. autofunction:: simgrid.this_actor.yield_
 
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_actor_yield()
+
 Logging messages
 ----------------
 
@@ -708,7 +711,7 @@ the execution, or start an asynchronous activity.
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::this_actor::exec_async(double flops_amounts)
+      .. autodoxymethod:: simgrid::s4u::this_actor::exec_async
       .. autodoxymethod:: simgrid::s4u::this_actor::exec_init(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts)
       .. autodoxymethod:: simgrid::s4u::this_actor::exec_init(double flops_amounts)
       .. autodoxymethod:: simgrid::s4u::this_actor::execute(double flop)
@@ -723,7 +726,10 @@ the execution, or start an asynchronous activity.
 
    .. group-tab:: C
 
-      .. autodoxymethod:: sg_actor_self_execute(double flops)
+      .. autodoxymethod:: sg_actor_execute(double flops)
+      .. autodoxymethod:: sg_actor_execute_with_priority(double flops, double priority)
+      .. autodoxymethod:: sg_actor_exec_init(double computation_amount)
+      .. autodoxymethod:: sg_actor_exec_async(double computation_amount)
 
 Exiting
 -------
@@ -759,14 +765,21 @@ Initialization
       .. autodoxymethod:: simgrid::s4u::Engine::is_initialized()
       .. autodoxymethod:: simgrid::s4u::Engine::shutdown()
       .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &str)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, bool value)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, double value)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, int value)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, const std::string &value)
 
-      .. autodoxymethod:: simgrid::s4u::Engine::load_deployment(const std::string &deploy)
-      .. autodoxymethod:: simgrid::s4u::Engine::load_platform(const std::string &platf)
+      .. autodoxymethod:: simgrid::s4u::Engine::load_deployment
+      .. autodoxymethod:: simgrid::s4u::Engine::load_platform
       .. autodoxymethod:: simgrid::s4u::Engine::register_actor(const std::string &name)
       .. autodoxymethod:: simgrid::s4u::Engine::register_actor(const std::string &name, F code)
-      .. autodoxymethod:: simgrid::s4u::Engine::register_default(int(*code)(int, char **))
-      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, int(*code)(int, char **))
-      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, void(*code)(std::vector< std::string >))
+      .. autodoxymethod:: simgrid::s4u::Engine::register_default(const std::function< void(int, char **)> &code)
+      .. autodoxymethod:: simgrid::s4u::Engine::register_default(const kernel::actor::ActorCodeFactory &factory)
+
+      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, const std::function< void(int, char **)> &code)
+      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, const std::function< void(std::vector< std::string >)> &code)
+      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, const kernel::actor::ActorCodeFactory &factory)
 
    .. group-tab:: Python
    
@@ -791,7 +804,7 @@ Run the simulation
    .. group-tab:: C++
 
       .. autodoxymethod:: simgrid::s4u::Engine::get_clock()
-      .. autodoxymethod:: simgrid::s4u::Engine::run()
+      .. autodoxymethod:: simgrid::s4u::Engine::run
 
    .. group-tab:: Python
    
@@ -810,9 +823,9 @@ Retrieving actors
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_actor_count()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_actors()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_actors(const std::function< bool(ActorPtr)> &filter)
+      .. autodoxymethod:: simgrid::s4u::Engine::get_actor_count
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_actors
+      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_actors
 
    .. group-tab:: C
 
@@ -825,11 +838,11 @@ Retrieving hosts
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_hosts()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_host_count()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_hosts(const std::function< bool(Host *)> &filter)
-      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name(const std::string &name)
-      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name_or_null(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_hosts
+      .. autodoxymethod:: simgrid::s4u::Engine::get_host_count
+      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_hosts
+      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name
+      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name_or_null
 
    .. group-tab:: Python
 
@@ -846,11 +859,11 @@ Retrieving links
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_links()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_link_count()
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_links
+      .. autodoxymethod:: simgrid::s4u::Engine::get_link_count
       .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_links
-      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name(const std::string &name)
-      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name_or_null(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name
+      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name_or_null
 
 Interacting with the routing
 ----------------------------
@@ -859,12 +872,12 @@ Interacting with the routing
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_netpoints()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_netzones()
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_netpoints
+      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_netzones
       .. autodoxymethod:: simgrid::s4u::Engine::get_instance()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_netzone_root()
-      .. autodoxymethod:: simgrid::s4u::Engine::netpoint_by_name_or_null(const std::string &name)
-      .. autodoxymethod:: simgrid::s4u::Engine::netzone_by_name_or_null(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Engine::get_netzone_root
+      .. autodoxymethod:: simgrid::s4u::Engine::netpoint_by_name_or_null
+      .. autodoxymethod:: simgrid::s4u::Engine::netzone_by_name_or_null
       .. autodoxymethod:: simgrid::s4u::Engine::set_netzone_root(const NetZone *netzone)
 
 Signals
@@ -912,6 +925,14 @@ Basic management
 
       .. automethod:: simgrid.Mailbox.by_name
 
+      .. code-block:: C
+
+         #include <simgrid/s4u/mailbox.h>
+      
+      .. autodoxymethod:: sg_mailbox_by_name(const char *alias)
+
+   .. group-tab:: C
+
 Querying info
 -------------
 
@@ -919,8 +940,8 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_name()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_cname
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_name
 
    .. group-tab:: Python
 
@@ -944,6 +965,12 @@ Sending data
       .. automethod:: simgrid.Mailbox.put
       .. automethod:: simgrid.Mailbox.put_async
 
+   .. group-tab: C
+
+      .. autodoxymethod:: sg_mailbox_put(sg_mailbox_t mailbox, void *payload, long simulated_size_in_bytes)
+      .. autodoxymethod:: sg_mailbox_put_init(sg_mailbox_t mailbox, void *payload, long simulated_size_in_bytes)
+      .. autodoxymethod:: sg_mailbox_put_async(sg_mailbox_t mailbox, void *payload, long simulated_size_in_bytes)
+
 
 Receiving data
 --------------
@@ -952,15 +979,15 @@ Receiving data
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Mailbox::empty()
-      .. autodoxymethod:: simgrid::s4u::Mailbox::front()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::empty
+      .. autodoxymethod:: simgrid::s4u::Mailbox::front
       .. autodoxymethod:: simgrid::s4u::Mailbox::get()
       .. autodoxymethod:: simgrid::s4u::Mailbox::get(double timeout)
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_async(void **data)
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_async(T **data)
       .. autodoxymethod:: simgrid::s4u::Mailbox::get_init()
       .. autodoxymethod:: simgrid::s4u::Mailbox::iprobe(int type, bool(*match_fun)(void *, void *, kernel::activity::CommImpl *), void *data)
-      .. autodoxymethod:: simgrid::s4u::Mailbox::listen()
-      .. autodoxymethod:: simgrid::s4u::Mailbox::ready()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::listen
+      .. autodoxymethod:: simgrid::s4u::Mailbox::ready
 
    .. group-tab:: Python
 
@@ -968,6 +995,9 @@ Receiving data
 
    .. group-tab:: C
 
+      .. autodoxymethod:: sg_mailbox_get(sg_mailbox_t mailbox)
+      .. autodoxymethod:: sg_mailbox_get_async(sg_mailbox_t mailbox, void **data)
+      .. autodoxymethod:: sg_mailbox_get_name(const_sg_mailbox_t mailbox)
       .. autodoxymethod:: sg_mailbox_listen(const char *alias)
 
 Receiving actor
@@ -979,12 +1009,12 @@ See :ref:`s4u_receiving_actor`.
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_receiver()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_receiver
       .. autodoxymethod:: simgrid::s4u::Mailbox::set_receiver(ActorPtr actor)
 
    .. group-tab:: C
 
-      .. autodoxymethod:: ::sg_mailbox_set_receiver(const char *alias)
+      .. autodoxymethod:: sg_mailbox_set_receiver(const char *alias)
                   
 .. _API_s4u_Resource:
 
@@ -1023,13 +1053,13 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Disk::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_host()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_name()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_properties()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_property(const std::string &key)
-      .. autodoxymethod:: simgrid::s4u::Disk::get_read_bandwidth()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_write_bandwidth()
+      .. autodoxymethod:: simgrid::s4u::Disk::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_host() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_name() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_properties() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_property(const std::string &key) const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_read_bandwidth() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_write_bandwidth() const
       .. autodoxymethod:: simgrid::s4u::Disk::set_property(const std::string &, const std::string &value)
 
 I/O operations
@@ -1080,6 +1110,8 @@ Basic management
       idiom on hosts because SimGrid does not allow (yet) to create nor
       destroy resources once the simulation is started. 
 
+      .. autodoxymethod:: simgrid::s4u::Host::destroy()
+
    .. group-tab:: Python
 
       .. code:: Python
@@ -1131,20 +1163,81 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Host::get_core_count()
-      .. autodoxymethod:: simgrid::s4u::Host::get_disks()
-      .. autodoxymethod:: simgrid::s4u::Host::get_name()
+      .. autodoxymethod:: simgrid::s4u::Host::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_core_count() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_name() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_available_speed() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_load() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_speed() const
 
    .. group-tab:: Python
 
-      .. autoattribute:: simgrid.Exec.host
       .. autoattribute:: simgrid.Host.name
+      .. autoattribute:: simgrid.Host.load
+      .. autoattribute:: simgrid.Host.pstate
+      .. autoattribute:: simgrid.Host.speed
 
    .. group-tab:: C
 
-      .. autodoxymethod:: ::sg_host_core_count(const_sg_host_t host)
+      .. autodoxymethod:: sg_host_core_count(const_sg_host_t host)
+      .. autodoxymethod:: sg_host_dump(const_sg_host_t ws)
       .. autodoxymethod:: sg_host_get_name(const_sg_host_t host)
+      .. autodoxymethod:: sg_host_get_load(const_sg_host_t host)
+      .. autodoxymethod:: sg_host_get_speed(const_sg_host_t host)
+
+User data and properties
+------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Host::get_properties() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_property(const std::string &key) const
+      .. autodoxymethod:: simgrid::s4u::Host::set_properties(const std::unordered_map< std::string, std::string > &properties)
+      .. autodoxymethod:: simgrid::s4u::Host::set_property(const std::string &key, const std::string &value)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_host_set_property_value(sg_host_t host, const char *name, const char *value)
+      .. autodoxymethod:: sg_host_get_properties(const_sg_host_t host)
+      .. autodoxymethod:: sg_host_get_property_value(const_sg_host_t host, const char *name)
+      .. autodoxymethod:: sg_host_extension_create(void(*deleter)(void *))
+      .. autodoxymethod:: sg_host_extension_get(const_sg_host_t host, size_t rank)
+
+Retrieving components
+---------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Host::add_disk(const Disk *disk)
+      .. autodoxymethod:: simgrid::s4u::Host::get_actor_count() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_all_actors() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_disks() const
+      .. autodoxymethod:: simgrid::s4u::Host::remove_disk(const std::string &disk_name)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_host_get_actor_list(const_sg_host_t host, xbt_dynar_t whereto)
+
+On/Off
+------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Host::is_on() const
+      .. autodoxymethod:: simgrid::s4u::Host::turn_off()
+      .. autodoxymethod:: simgrid::s4u::Host::turn_on()
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_host_is_on(const_sg_host_t host)
+      .. autodoxymethod:: sg_host_turn_off(sg_host_t host)
+      .. autodoxymethod:: sg_host_turn_on(sg_host_t host)
 
 DVFS
 ----
@@ -1153,9 +1246,9 @@ DVFS
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::get_pstate()
-      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_count()
-      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_speed(int pstate_index)
+      .. autodoxymethod:: simgrid::s4u::Host::get_pstate() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_count() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_speed(int pstate_index) const
       .. autodoxymethod:: simgrid::s4u::Host::set_pstate(int pstate_index)
       .. autodoxymethod:: simgrid::s4u::Host::set_speed_profile(kernel::profile::Profile *p)
       .. autodoxymethod:: simgrid::s4u::Host::set_state_profile(kernel::profile::Profile *p)
@@ -1173,10 +1266,49 @@ DVFS
       .. autodoxymethod:: sg_host_get_pstate_speed(const_sg_host_t host, int pstate_index)
       .. autodoxymethod:: sg_host_set_pstate(sg_host_t host, int pstate)
 
-.. doxygenclass:: simgrid::s4u::Host
-   :members:
-   :protected-members:
-   :undoc-members:
+Execution
+---------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Host::exec_async
+      .. autodoxymethod:: simgrid::s4u::Host::execute(double flops) const
+      .. autodoxymethod:: simgrid::s4u::Host::execute(double flops, double priority) const
+
+Platform and routing
+--------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Host::get_englobing_zone()
+      .. autodoxymethod:: simgrid::s4u::Host::get_netpoint() const
+      .. autodoxymethod:: simgrid::s4u::Host::route_to(const Host *dest, std::vector< Link * > &links, double *latency) const
+      .. autodoxymethod:: simgrid::s4u::Host::route_to(const Host *dest, std::vector< kernel::resource::LinkImpl * > &links, double *latency) const
+      .. autodoxymethod:: simgrid::s4u::Host::sendto(Host *dest, double byte_amount)
+      .. autodoxymethod:: simgrid::s4u::Host::sendto_async(Host *dest, double byte_amount)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_host_get_route(const_sg_host_t from, const_sg_host_t to, xbt_dynar_t links)
+      .. autodoxymethod:: sg_host_get_route_bandwidth(const_sg_host_t from, const_sg_host_t to)
+      .. autodoxymethod:: sg_host_get_route_latency(const_sg_host_t from, const_sg_host_t to)
+      .. autodoxymethod:: sg_host_sendto(sg_host_t from, sg_host_t to, double byte_amount)
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::Host::on_creation
+      .. autodoxyvar:: simgrid::s4u::Host::on_destruction
+      .. autodoxyvar:: simgrid::s4u::Host::on_speed_change
+      .. autodoxyvar:: simgrid::s4u::Host::on_state_change
 
 .. _API_s4u_Link:
 
@@ -1184,10 +1316,158 @@ DVFS
 ⁣  class Link
 =============
 
-.. doxygenclass:: simgrid::s4u::Link
-   :members:
-   :protected-members:
-   :undoc-members:
+.. autodoxyclass:: simgrid::s4u::Link
+
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Link.hpp>
+
+      Note that there is no LinkPtr type, and that you cannot use the RAII
+      idiom on hosts because SimGrid does not allow (yet) to create nor
+      destroy resources once the simulation is started. 
+
+   .. group-tab:: Python
+
+      .. code:: Python
+
+         from simgrid import Link
+
+   .. group-tab:: C
+
+      .. code:: C
+
+         #include <simgrid/link.h>
+
+      .. doxygentypedef:: sg_link_t
+      .. cpp:type:: const s4u_Link* const_sg_link_t
+
+         Pointer to a constant link object.
+
+Retrieving links
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      See also :cpp:func:`simgrid::s4u::Engine::get_all_links`.
+
+      .. autodoxymethod:: simgrid::s4u::Link::by_name(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Link::by_name_or_null(const std::string &name)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_link_by_name(const char *name)
+      .. autodoxymethod:: sg_link_count()
+      .. autodoxymethod:: sg_link_list()
+
+Querying info
+--------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::get_bandwidth() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_latency() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_name() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_sharing_policy() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_usage() const
+      .. autodoxymethod:: simgrid::s4u::Link::is_used() const
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_link_get_bandwidth(const_sg_link_t link)
+      .. autodoxymethod:: sg_link_get_latency(const_sg_link_t link)
+      .. autodoxymethod:: sg_link_get_name(const_sg_link_t link)
+      .. autodoxymethod:: sg_link_is_shared(const_sg_link_t link)
+
+Modifying characteristics
+-------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::set_bandwidth(double value)
+      .. autodoxymethod:: simgrid::s4u::Link::set_latency(double value)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_link_set_bandwidth(sg_link_t link, double value)
+      .. autodoxymethod:: sg_link_set_latency(sg_link_t link, double value)
+
+User data and properties
+------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::get_property(const std::string &key) const
+      .. autodoxymethod:: simgrid::s4u::Link::set_property(const std::string &key, const std::string &value)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_link_get_data(const_sg_link_t link)
+      .. autodoxymethod:: sg_link_set_data(sg_link_t link, void *data)
+
+On/Off
+------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      See also :cpp:func:`simgrid::s4u::Link::set_state_profile`.
+
+      .. autodoxymethod:: simgrid::s4u::Link::is_on() const
+      .. autodoxymethod:: simgrid::s4u::Link::turn_off()
+      .. autodoxymethod:: simgrid::s4u::Link::turn_on()
+
+Dynamic profiles
+----------------
+
+See :ref:`howto_churn` for more details.
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::set_bandwidth_profile(kernel::profile::Profile *profile)
+      .. autodoxymethod:: simgrid::s4u::Link::set_latency_profile(kernel::profile::Profile *profile)
+      .. autodoxymethod:: simgrid::s4u::Link::set_state_profile(kernel::profile::Profile *profile)
+
+WIFI links
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::set_host_wifi_rate
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::Link::on_bandwidth_change
+      .. autodoxyvar:: simgrid::s4u::Link::on_communicate
+      .. autodoxyvar:: simgrid::s4u::Link::on_communication_state_change
+      .. autodoxyvar:: simgrid::s4u::Link::on_creation
+      .. autodoxyvar:: simgrid::s4u::Link::on_destruction
+      .. autodoxyvar:: simgrid::s4u::Link::on_state_change
 
 .. _API_s4u_NetZone:
 
@@ -1195,10 +1475,121 @@ DVFS
 ⁣  class NetZone
 ================
 
-.. doxygenclass:: simgrid::s4u::NetZone
-   :members:
-   :protected-members:
-   :undoc-members:
+.. autodoxyclass:: simgrid::s4u::NetZone
+
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/NetZone.hpp>
+
+      Note that there is no NetZonePtr type, and that you cannot use the RAII
+      idiom on network zones because SimGrid does not allow (yet) to create nor
+      destroy resources once the simulation is started. 
+
+   .. group-tab:: C
+
+      .. code:: C
+
+         #include <simgrid/zone.h>
+
+      .. doxygentypedef:: sg_netzone_t
+      .. cpp:type:: const s4u_NetZone* const_sg_netzone_t
+
+         Pointer to a constant network zone object.
+
+Retrieving zones
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      See :cpp:func:`simgrid::s4u::Engine::get_netzone_root`,
+      :cpp:func:`simgrid::s4u::Engine::netzone_by_name_or_null` and
+      :cpp:func:`simgrid::s4u::Engine::get_filtered_netzones`.
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_by_name(const char *name)
+      .. autodoxymethod:: sg_zone_get_root()
+
+Querying info
+--------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_name() const
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_name(const_sg_netzone_t zone)
+
+User data and properties
+------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_properties() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_property(const std::string &key) const
+      .. autodoxymethod:: simgrid::s4u::NetZone::set_property(const std::string &key, const std::string &value)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_property_value(const_sg_netzone_t as, const char *name)
+      .. autodoxymethod:: sg_zone_set_property_value(sg_netzone_t netzone, const char *name, const char *value)
+
+Retrieving components
+---------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_all_hosts() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_host_count() const
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_hosts(const_sg_netzone_t zone, xbt_dynar_t whereto)
+
+Routing data
+------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::add_bypass_route
+      .. autodoxymethod:: simgrid::s4u::NetZone::add_component(kernel::routing::NetPoint *elm)
+      .. autodoxymethod:: simgrid::s4u::NetZone::add_route
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_children() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_father()
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_sons(const_sg_netzone_t zone, xbt_dict_t whereto)
+
+Signals
+-------
+
+.. tabs::
+
+  .. group-tab:: C++
+
+     .. autodoxyvar:: simgrid::s4u::NetZone::on_creation
+     .. autodoxyvar:: simgrid::s4u::NetZone::on_route_creation
+     .. autodoxyvar:: simgrid::s4u::NetZone::on_seal
 
 .. _API_s4u_VirtualMachine:
 
@@ -1206,23 +1597,110 @@ DVFS
 ⁣  class VirtualMachine
 =======================
 
-.. doxygenclass:: simgrid::s4u::VirtualMachine
-   :members:
-   :protected-members:
-   :undoc-members:
-
-.. autodoxymethod:: sg_vm_create_core
-.. autodoxymethod:: sg_vm_create_multicore
-.. autodoxymethod:: sg_vm_get_name
-.. autodoxymethod:: sg_vm_get_pm
-.. autodoxymethod:: sg_vm_is_created
-.. autodoxymethod:: sg_vm_is_running
-.. autodoxymethod:: sg_vm_is_suspended
-.. autodoxymethod:: sg_vm_start
-.. autodoxymethod:: sg_vm_suspend
-.. autodoxymethod:: sg_vm_resume
-.. autodoxymethod:: sg_vm_shutdown
-.. autodoxymethod:: sg_vm_destroy
+
+.. autodoxyclass:: simgrid::s4u::VirtualMachine
+
+Basic management
+----------------
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/VirtualMachine.hpp>
+
+      Note that there is no VirtualMachinePtr type, and that you cannot use the RAII
+      idiom on virtual machines. There is no good reason for that and should change in the future.
+
+   .. group-tab:: C
+
+      .. code:: C
+
+         #include <simgrid/vm.h>
+
+      .. doxygentypedef:: sg_vm_t
+      .. cpp:type:: const s4u_VirtualMachine* const_sg_vm_t
+
+         Pointer to a constant virtual machine object.
+
+Creating VMs
+------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::VirtualMachine(const std::string &name, Host *physical_host, int core_amount)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::VirtualMachine(const std::string &name, Host *physical_host, int core_amount, size_t ramsize)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::destroy
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_vm_create_core
+      .. autodoxymethod:: sg_vm_create_multicore
+      .. autodoxymethod:: sg_vm_destroy
+
+Querying info
+--------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_pm() const
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_ramsize() const
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_state() const
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::set_bound(double bound)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::set_pm(Host *pm)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::set_ramsize(size_t ramsize)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_vm_get_ramsize(const_sg_vm_t vm)
+      .. autodoxymethod:: sg_vm_set_bound(sg_vm_t vm, double bound)
+      .. autodoxymethod:: sg_vm_set_ramsize(sg_vm_t vm, size_t size)
+
+      .. autodoxymethod:: sg_vm_get_name
+      .. autodoxymethod:: sg_vm_get_pm
+      .. autodoxymethod:: sg_vm_is_created
+      .. autodoxymethod:: sg_vm_is_running
+      .. autodoxymethod:: sg_vm_is_suspended
+
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::resume()
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::shutdown()
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::start()
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::suspend()
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_vm_start
+      .. autodoxymethod:: sg_vm_suspend
+      .. autodoxymethod:: sg_vm_resume
+      .. autodoxymethod:: sg_vm_shutdown
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_migration_end
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_migration_start
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_resume
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_shutdown
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_start
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_started
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_suspend
 
 .. _API_s4u_Activity:
 
@@ -1238,23 +1716,59 @@ class Activity
    :ref:`I/O <API_s4u_Io>` (started on and consumming disks).
    See also the :ref:`section on activities <s4u_Activities>` above.
 
-Querying info about activities
-------------------------------
+Basic management
+----------------
 
-   .. autodoxymethod:: simgrid::s4u::Activity::get_remaining()
-   .. autodoxymethod:: simgrid::s4u::Activity::get_state()
-   .. autodoxymethod:: simgrid::s4u::Activity::set_remaining(double remains)
-   .. autodoxymethod:: simgrid::s4u::Activity::get_impl
+.. tabs::
 
-Activities lifecycle
---------------------
+   .. group-tab:: C++
 
-   .. autodoxymethod:: simgrid::s4u::Activity::start
-   .. autodoxymethod:: simgrid::s4u::Activity::cancel
-   .. autodoxymethod:: simgrid::s4u::Activity::test
-   .. autodoxymethod:: simgrid::s4u::Activity::wait
-   .. autodoxymethod:: simgrid::s4u::Activity::wait_for
-   .. autodoxymethod:: simgrid::s4u::Activity::wait_until(double time_limit)
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Activity.hpp>
+
+      .. doxygentypedef:: ActivityPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Activity::get_cname
+      .. autodoxymethod:: simgrid::s4u::Activity::get_name
+      .. autodoxymethod:: simgrid::s4u::Activity::get_remaining() const
+      .. autodoxymethod:: simgrid::s4u::Activity::get_state() const
+      .. autodoxymethod:: simgrid::s4u::Activity::set_remaining(double remains)
+      .. autodoxymethod:: simgrid::s4u::Activity::set_state(Activity::State state)
+
+
+Activities life cycle
+---------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Activity::start
+      .. autodoxymethod:: simgrid::s4u::Activity::cancel
+      .. autodoxymethod:: simgrid::s4u::Activity::test
+      .. autodoxymethod:: simgrid::s4u::Activity::wait
+      .. autodoxymethod:: simgrid::s4u::Activity::wait_for
+      .. autodoxymethod:: simgrid::s4u::Activity::wait_until(double time_limit)
+      .. autodoxymethod:: simgrid::s4u::Activity::vetoable_start()
+
+Suspending and resuming an activity
+-----------------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Activity::suspend
+      .. autodoxymethod:: simgrid::s4u::Activity::resume
+      .. autodoxymethod:: simgrid::s4u::Activity::is_suspended
 
 .. _API_s4u_Comm:
 
@@ -1262,12 +1776,79 @@ Activities lifecycle
 ⁣  class Comm
 =============
 
-.. doxygentypedef:: CommPtr
+.. autodoxyclass:: simgrid::s4u::Comm
 
-.. doxygenclass:: simgrid::s4u::Comm
-   :members:
-   :protected-members:
-   :undoc-members:
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Comm.hpp>
+
+      .. doxygentypedef:: CommPtr
+
+   .. group-tab:: Python
+
+      .. code:: Python
+
+         from simgrid import Comm
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Comm::get_dst_data_size() const
+      .. autodoxymethod:: simgrid::s4u::Comm::get_mailbox() const
+      .. autodoxymethod:: simgrid::s4u::Comm::get_sender() const
+      .. autodoxymethod:: simgrid::s4u::Comm::set_dst_data(void **buff)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_dst_data(void **buff, size_t size)
+      .. autodoxymethod:: simgrid::s4u::Comm::detach()
+      .. autodoxymethod:: simgrid::s4u::Comm::detach(void(*clean_function)(void *))
+      .. autodoxymethod:: simgrid::s4u::Comm::set_rate(double rate)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_src_data(void *buff)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_src_data(void *buff, size_t size)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_src_data_size(size_t size)
+
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Comm::cancel
+      .. autodoxymethod:: simgrid::s4u::Comm::start
+      .. autodoxymethod:: simgrid::s4u::Comm::test
+      .. autodoxymethod:: simgrid::s4u::Comm::test_any(const std::vector< CommPtr > *comms)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_all(const std::vector< CommPtr > *comms)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_any(const std::vector< CommPtr > *comms)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_any_for(const std::vector< CommPtr > *comms_in, double timeout)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_for
+
+   .. group-tab:: Python
+
+       .. automethod:: simgrid.Comm.test
+       .. automethod:: simgrid.Comm.wait
+       .. automethod:: simgrid.Comm.wait_all
+       .. automethod:: simgrid.Comm.wait_any
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::Comm::on_completion
+      .. autodoxyvar:: simgrid::s4u::Comm::on_start
 
 .. _API_s4u_Exec:
 
@@ -1275,38 +1856,87 @@ Activities lifecycle
 ⁣  class Exec
 =============
 
-.. doxygentypedef:: ExecPtr
+.. autodoxyclass:: simgrid::s4u::Exec
 
-.. doxygenclass:: simgrid::s4u::Exec
-   :members:
-   :protected-members:
-   :undoc-members:
+Basic management
+----------------
 
-.. _API_s4u_ExecSeq:
+.. tabs::
 
-==================
-⁣    class ExecSeq
-==================
+   .. group-tab:: C++
 
-.. doxygentypedef:: ExecSeqPtr
+      .. code-block:: C++
 
-.. doxygenclass:: simgrid::s4u::ExecSeq
-   :members:
-   :protected-members:
-   :undoc-members:
+         #include <simgrid/s4u/Exec.hpp>
 
-.. _API_s4u_ExecPar:
+      .. doxygentypedef:: ExecPtr
 
-==================
-⁣    class ExecPar
-==================
+   .. group-tab:: Python
+
+      .. code:: Python
+
+         from simgrid import Exec
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Exec::get_cost() const
+      .. autodoxymethod:: simgrid::s4u::Exec::get_finish_time() const
+      .. autodoxymethod:: simgrid::s4u::Exec::get_host() const
+      .. autodoxymethod:: simgrid::s4u::Exec::get_host_number() const
+      .. cpp:function:: double Exec::get_remaining()
+
+         On sequential executions, returns the amount of flops that remain to be done;
+         This cannot be used on parallel executions.
+      
+      .. autodoxymethod:: simgrid::s4u::Exec::get_remaining_ratio
+      .. autodoxymethod:: simgrid::s4u::Exec::get_start_time() const
+      .. autodoxymethod:: simgrid::s4u::Exec::set_bound(double bound)
+      .. autodoxymethod:: simgrid::s4u::Exec::set_host
+      .. autodoxymethod:: simgrid::s4u::Exec::set_priority(double priority)
+
+   .. group-tab:: Python
+
+       .. autoattribute:: simgrid.Exec.host
+       .. autoattribute:: simgrid.Exec.remaining
+       .. autoattribute:: simgrid.Exec.remaining_ratio
 
-.. doxygentypedef:: ExecParPtr
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Exec::cancel
+      .. autodoxymethod:: simgrid::s4u::Exec::set_timeout(double timeout)
+      .. autodoxymethod:: simgrid::s4u::Exec::start
+      .. autodoxymethod:: simgrid::s4u::Exec::test
+      .. autodoxymethod:: simgrid::s4u::Exec::wait
+      .. autodoxymethod:: simgrid::s4u::Exec::wait_any(std::vector< ExecPtr > *execs)
+      .. autodoxymethod:: simgrid::s4u::Exec::wait_any_for(std::vector< ExecPtr > *execs, double timeout)
+      .. autodoxymethod:: simgrid::s4u::Exec::wait_for
+
+   .. group-tab:: Python
 
-.. doxygenclass:: simgrid::s4u::ExecPar
-   :members:
-   :protected-members:
-   :undoc-members:
+       .. automethod:: simgrid.Exec.cancel
+       .. automethod:: simgrid.Exec.start
+       .. automethod:: simgrid.Exec.test
+       .. automethod:: simgrid.Exec.wait
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::Exec::on_start
+      .. autodoxyvar:: simgrid::s4u::Exec::on_completion
 
 .. _API_s4u_Io:
 
@@ -1314,12 +1944,43 @@ Activities lifecycle
 ⁣  class Io
 ===========
 
-.. doxygentypedef:: IoPtr
+.. autodoxyclass:: simgrid::s4u::Io
+
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Io.hpp>
+
+      .. doxygentypedef:: IoPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Io::get_performed_ioops() const
+      .. autodoxymethod:: simgrid::s4u::Io::get_remaining
 
-.. doxygenclass:: simgrid::s4u::Io
-   :members:
-   :protected-members:
-   :undoc-members:
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Io::cancel
+      .. autodoxymethod:: simgrid::s4u::Io::start
+      .. autodoxymethod:: simgrid::s4u::Io::test
+      .. autodoxymethod:: simgrid::s4u::Io::wait
+      .. autodoxymethod:: simgrid::s4u::Io::wait_for
 
 .. _API_s4u_Synchronizations:
 
@@ -1451,8 +2112,8 @@ Basic management
             #include <simgrid/cond.h>
 
          .. doxygentypedef:: sg_cond_t
-         .. doxygenfunction:: sg_cond_init
-         .. doxygenfunction:: sg_cond_destroy
+         .. autodoxymethod:: sg_cond_init
+         .. autodoxymethod:: sg_cond_destroy
 
 Waiting and notifying
 ---------------------
@@ -1477,10 +2138,10 @@ Waiting and notifying
 
       .. group-tab:: C
 
-         .. doxygenfunction:: sg_cond_notify_all
-         .. doxygenfunction:: sg_cond_notify_one
-         .. doxygenfunction:: sg_cond_wait
-         .. doxygenfunction:: sg_cond_wait_for
+         .. autodoxymethod:: sg_cond_notify_all
+         .. autodoxymethod:: sg_cond_notify_one
+         .. autodoxymethod:: sg_cond_wait
+         .. autodoxymethod:: sg_cond_wait_for
 
 .. _API_s4u_Semaphore:
 
@@ -1530,44 +2191,17 @@ Locking
 
          .. autodoxymethod:: simgrid::s4u::Semaphore::acquire()
          .. autodoxymethod:: simgrid::s4u::Semaphore::acquire_timeout(double timeout)
-         .. autodoxymethod:: simgrid::s4u::Semaphore::get_capacity()
+         .. autodoxymethod:: simgrid::s4u::Semaphore::get_capacity() const
          .. autodoxymethod:: simgrid::s4u::Semaphore::release()
-         .. autodoxymethod:: simgrid::s4u::Semaphore::would_block()
+         .. autodoxymethod:: simgrid::s4u::Semaphore::would_block() const
 
       .. group-tab:: C
 
          .. autodoxymethod:: sg_sem_acquire(sg_sem_t sem)
          .. autodoxymethod:: sg_sem_acquire_timeout(sg_sem_t sem, double timeout)
-         .. autodoxymethod:: sg_sem_get_capacity(sg_sem_t sem)
+         .. autodoxymethod:: sg_sem_get_capacity(const_sg_sem_t sem)
          .. autodoxymethod:: sg_sem_release(sg_sem_t sem)
-         .. autodoxymethod:: sg_sem_would_block(sg_sem_t sem)
-
-Python API Reference
-********************
-
-The Python API is automatically generated with pybind11. It closely mimicks the C++
-API, to which you should refer for more information.
-
-==========
-Class Comm
-==========
-
-.. autoclass:: simgrid.Comm
-   :members:
-
-==========
-Class Exec
-==========
-
-.. autoclass:: simgrid.Exec
-   :members:
-
-==========
-Class Host
-==========
-
-.. autoclass:: simgrid.Host
-   :members:
+         .. autodoxymethod:: sg_sem_would_block(const_sg_sem_t sem)
 
 .. |hr| raw:: html