+SimGrid (3.0.1) unstable; urgency=low
+
+ XBT:
+ * Unfortunately, I had missed 5 misnamed functions:
+ xbt_fifo_item_t xbt_fifo_newitem(void);
+ void xbt_fifo_freeitem(xbt_fifo_item_t);
+ xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l);
+ xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i);
+ xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i);
+ They're now deprecated. Please use their new versions:
+ xbt_fifo_item_t xbt_fifo_new_item(void);
+ void xbt_fifo_free_item(xbt_fifo_item_t);
+ xbt_fifo_item_t xbt_fifo_get_first_item(xbt_fifo_t l);
+ xbt_fifo_item_t xbt_fifo_get_next_item(xbt_fifo_item_t i);
+ xbt_fifo_item_t xbt_fifo_get_prev_item(xbt_fifo_item_t i);
+ [AL]
+ * Bugfix: really disconnect fifo items which are remove_item()ed [AL]
+ * Documentation: xbt_log module unmercifully reworked [MQ]
+ * Bugfix: there was a problem with the ending of contexts with
+ the pthread backend. It caused some weird deadlock or behavior
+ depending on the pthread implementation. [AL]
+
+ MSG:
+ * Add additionnal checkings on channel values in communication [AL]
+ * New: MSG_task_get_source to see on which host a task was generated [HC]
+
+ GRAS performance improvements: [MQ]
+ [DataDesc]
+ * Reduce the amount of cbps creation/destruction by making it static to
+ datadesc_send/recv() and using a (newly created) cbps_reset (based on
+ dynar_reset ())
+ [Virtu]
+ * Change libdata to a set so that we can search for stuff by ID (and thus
+ reduce the insane amount of dict lookups)
+
+ [Transport]
+ * Actually implement gras_datadesc_copy() so that we don't have to mimick
+ RL communication on top of SG since it's so uneffective.
+ It may also be used for inter-thread communication in RL, one day.
+ * Use gras_datadesc_copy() to exchange messages on top of SG
+ Allows to:
+ - improve message exchange performance on top of SG
+ - deprecate transport_plugin_sg.c:gras_trp_sg_chunk_send() & recv()
+ * Don't exchange on the network the size of the used part of buffer,
+ instead, specify the possible buffer size to read().
+ Advantages:
+ - reduces the amount of read/write calls (one pair per exchange)
+ - reduces the amount of exchanged data (the size)
+ - allows to retrieve all arrived data on receiver side, if we don't need
+ it right now (subsequent read will peek the buffer)
+ - allows the receiver to proceed with the begining of the stream before
+ everything is arrived
+ - make it possible to build an iov transport (using readv/writev)
+ Extra difficulty:
+ - take care of the data with non-stable storage (like stacked data),
+ and bufferize them.
+ * If possible, TCP send uses vector I/O (when writev() is here)
+ - Don't use it for receive since we send data sizes and data on the
+ same stream, so we wouldn't be able to chain large amount of chunks
+ before having to flush the stuff to read the size.
+ * Rework the transport plugin mecanism to simplify it and reduce the
+ amount of pointer dereferencement when searching for the right function
+ to use.
+
+ * I guess that now, we do almost as few system calls as possible while
+ doing as few data copy as possible.
+
+ To improve it further, we could try to send all the sizes first and then
+ all the data (to use iov on receiving size), but it's only a partial
+ solution: when you have 2 dimensional data, the sizes of the second
+ dimension is data of the first dimension, so you need 3 streams.
+
+ I'm not sure the potential performance gains justify the coding burden.