+SimGrid (2.91) unstable; urgency=low
+
+ Alpha 2 on the path to SimGrid 3
+
+ [Arnaud]
+ (surf)
+ - Bug fix in the lmm_solver.
+ (msg)
+ - New! Interface to Paje (see http://www-id.imag.fr/Logiciels/paje/)
+ through the function MSG_paje_output.
+ - New! Introducing two new functions MSG_process_kill() and MSG_process_killall().
+ - It is possible to bound the rate of a communication in MSG with
+ MSG_task_put_bounded() (was already in the previous version but I had forgotten
+ to write it in the changelog).
+ - Bug fix to let GRAS run on top of MSG until we move it directly on top
+ of the SURF.
+
+ [Martin]
+ (infrastructure)
+ - Various cleanups to the autotools stuff
+ - Begin to move Gras examples to examples/gras/
+ - Let make distcheck work again (yeah!)
+ (documentation)
+ - documentation overhauled using doxygen.
+ gtk-doc-tools is dead in SimGrid now.
+ - Automatically extract all existing logging categories, and add the list
+ to the documentation (long standing one, to say the less)
+ (gras)
+ - Cleanup the known architecture table. Reorder the entries to group what
+ should be, and use a more consistent naming scheme.
+ (some of the test dataset are still to be regenerated)
+ - New! Allow library to register globals on each process just as userdata
+ does.
+ This is implemented using a xbt_dict and not a xbt_set, so we loose the
+ lookup time (for now).
+ Use it in msg and trp.
+ This cleans a lot the internals and helps enforcing privacy of the
+ headers between the gras components.
+ - New! Add a timer mechanism, not unlike cron(8) and at(1).
+ - Bugfix: gras_os_time was delirious in RL.
+ - Bugfix: gras_trp_select/RL don't run into the wall when asked to select
+ onto 0 sockets.
+ - Reenable GRAS now that it works.
+
+ -- Arnaud Legrand <Arnaud.Legrand@imag.fr> Mon, 14 Feb 2005 14:02:13 -0800
+
+SimGrid (2.90) unstable; urgency=low
+
+ Alpha 1 on the path to SimGrid 3
+
+ * It is a long time since the last release of SimGrid. I'm sorry about
+ that but as I had told you, I was rewriting a lot of things. I apologize
+ to those who had been reporting bugs to me and that I had not answered.
+ If your bug is still in the new version, please tell me. Here is a
+ summary of the main changes.
+
+ * 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.
+ 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
+ in the documentation.
+
+ * REVOLUTION 2: I have removed SG and I am now using a new simulation
+ kernel optimized for our needs (called SURF but only the developers
+ should use it). Hence, MSG is now roughly 30 times faster and I think
+ that by rewriting a little bit MSG, I could event speed it up a little
+ bit more. Beside the gain in speed, it is also much easier to encode a
+ new platform model with SURF than it was with SG. More to come...
+
+ * 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 :
+ 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
+ description. The new format is described in the documentation.
+ Have a look in tools/platform_generation. There is a tiny script
+ that converts from the old platform format to the new one. Concerning
+ the application deployment format, parsing the old one is tricky.
+ I think most of you should however be able to convert your files. If
+ it is really an issue, I can write a C code that does the conversion.
+ Let me know.
+ 2) the toolbox tbx does not exist anymore. We now have a library
+ with much more data-structures but without the hash-tables (we have
+ dictionaries that are much faster).
+
+ -- Arnaud Legrand <Arnaud.Legrand@imag.fr> Mon, 31 Jan 2005 10:45:53 -0800
+
+*****************************************************************************
+* Follows the old GRAS changelog. It does not follow the same syntax, but I *
+* don't feel like converting the oldies. (Mt) *
+*****************************************************************************
+
+2005-01-31 Arnaud
+ Version 2.90: "the long awaited one"
+ - Finished rewriting and debugging MSG. Rewrote the documentation.
+ - disable GRAS for now since it needs to be ported to the newest SG
+
+2004-12-16 Martin
+ - Finish the port to windows (using mingw32 for cross-compile)
+
+2004-11-28 Arnaud
+ - Main loop and datastructures of SURF. A cpu resource object is
+ functional. Surf can thus be used to create cpu's with variable
+ performance on which you can execute some actions.
+
+2004-11-15 Martin Quinson
+ - Port to ARM. Simply added the alignment and size descriptions. Should
+ work, but the ARM machines are so slow that I didn't had the opportunity
+ to 'make check' over there yet.
+
+2004-11-15 Arnaud Legrand
+ - Trace manager now written. It uses a heap structure and is therefore
+ expected to be efficient. It may however be speeded up (particularly
+ when many events occur at the same date) by using red and black
+ trees. One day maybe...
+ - Max-min linear system solver written. It uses a sparse matrix
+ structure taking advantage of its expected use. Most operations are
+ O(1) and free/calloc are called as few as possible. The computation of
+ the minimum could however be improved by using a red and black tree
+ (again ! ;).
+
+2004-11-03 Arnaud Legrand
+ - Rename every gras_* function that was in xbt/ to its xbt_
+ counterpart.
+ - Add a heap and a doubly-linked list to xbt
+ - Added a dichotomy to the dictionaries. make check works as well before
+ so I assume that the patch is correct. I do not know however if things
+ run effectively faster than before now. :)
+
+ Inclusion of the SimGrid tree in the GRAS one. The archive is renamed to
+ SimGrid, and the version number is bumped to 2.x
+
+2004-10-29 Martin Quinson
+ - Introduction of the remote errors.
+ They are the result of a RMI/RPC on the remote machine.
+ ErrCodes being scalar values, you can't get the host on which those
+ errors did happen. Extending the error mechanism as in Gnome is possible.
+ No idea yet whether it is a good idea.
+
+2004-10-28 Martin Quinson
+ - Interface revolution: the Starred Structure Eradication.
+ I used to do typedef struct {} toto_t; and then handle *toto_t.
+ Arnaud (and Oli) didn't like it, and I surrendered. Now, you have:
+ - ???_t is a valid type (builded with typedef)
+ - s_toto_t is a structure (access to fields with .)
+ - s_toto is a structure needing 'struct' keyword to be used
+ - e_toto_t is an enum
+ - toto_t is an 'object' (struct*)
+ Exemple:
+ 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
+ s_toto_t) is private.
+
+ - While I was at it, all gras_<obj>_free() functions want a gras_<obj>_t*
+ so that it can set the variable to NULL. It was so for dicts and sets,
+ it changed for dynars.
+
+ - Fix a bunch of memleaks in dict_remove
+ - Fix a bug in sg/server_socket opening: it failed all the time.
+
+2004-10-07 Martin Quinson
+ - Speed up dynar lookup operation a bit.
+
+ gras_dynar_get is dead.
+
+ Now, you can choose between gras_dynar_get_cpy (the old gras_dynar_get
+ but should be avoided for efficiency reasons) and gras_dynar_get_ptr
+ (which gives you the address of the stored data).
+
+ gras_dynar_get_as is an helpful macro which allows you to retrieve a
+ copy of the data using an affectation to do the job and not a memcpy.
+
+ int toto = gras_dynar_get_as(dyn,0,int); rewrites itself to
+ int toto = *(int*)gras_dynar_get_ptr(dyn,0);
+
+ It does not really speedup the dynar test because they are
+ setting elements all the time (and look them seldom). But the dict does
+ far more lookup than setting.
+
+ So, this brings the dict_crash test from ~33s to ~25s (200000 elms).
+
+2004-10-05 Martin Quinson
+ - Allow to (en/dis)able the cycle detection at run time.
+
+ Whether we should check for cycle or not is now a property of each
+ datatype. When you think there may be some cycle, use datadesc_cycle_set.
+ datadesc_cycle_unset allow to remove this property when previously set.
+
+ Note that the cycle detection is off by default since it impacts the
+ performance. Watch the data you feed GRAS with ;)
+
+ This property is hereditary. Any element embedded in a structure having it
+ set have it set for the time of this data exchange.
+
+ You should set it both on sender and receiver side. If you don't set it on
+ sender side, it will enter an endless loop. If you forget on receiver
+ side, the cycles won't be recreated after communication.
+
+ - Header reorganization.
+ Kill gras_private.h, each submodule must load the headers it needs.
+
+2004-10-04 Martin Quinson
+ - Interface revolution: do not try to survive to malloc failure.
+
+ Now, gras_malloc and friends call gras_abort() on failure.
+ As a conclusion, malloc_error is not a valid error anymore, and all
+ functions for which it was the only gras_error_t return value are
+ changed. They now return void, or there result directly.
+ This simplify the API a lot.
+
+2004-09-29 Martin Quinson
+ - Re-enable raw sockets.
+ Created by gras_socket_{client,server}_ext;
+ Used with gras_raw_{send,recv}
+ No select possible.
+
+ It should allow to kill the last bits of gras first version soon.
+
+ This is not completely satisfactory yet (duplicate code with
+ chunk_{send,recv}; a bit out of the plugin mechanism), but it should
+ work.
+
+ - Simplify transport plugin (internal) interface by not passing any
+ argument to _server and _client, but embedding them in the socket
+ struct directly.
+
+2004-09-28 Martin Quinson
+ - Finish the port to AIX.
+ autoconf was my problem (segfault within the malloc replacement
+ function. No idea why)
+
+2004-09-16 Martin Quinson
+ - Fix some size_t madness on 64bit architectures.
+
+2004-09-08 Martin Quinson
+ - Reduce the number of system headers loaded, overload some more system
+ calls (such as malloc to cast the result of the system one, and work
+ properly on AIX)
+ - Fix and reintroduce the config support
+
+2004-09-07 Martin Quinson
+ - Source code reorganization to allow Arnaud to surf all over there.
+ - Allow to document the logging categories.
+ - Remove all uppercase from logging categories and useless cleanup in names.
+
+2004-08-18 Martin Quinson
+ Version 0.6.2 (protocol not changed; API changed)
+ - Interface cleanup: gras_msgtype_by_name returns the type (instead of a
+ gras_error_t), and NULL when not found. Functions expecting a msgtype
+ as argument (msg_wait; msg_send) deal with NULL argument by providing a
+ hopefully usefull message.
+ - Portability to prehistoric sparcs again
+
+2004-08-17 Martin Quinson
+ Version 0.6.1 (protocol not changed; ABI not changed)
+ - prealloc some buffers to speed things up
+
+2004-08-11 Martin Quinson
+ Version 0.6 (protocol not changed; ABI expended)
+ - The parsing macro can deal with the references, provided that you add
+ the relevant annotations (using GRAS_ANNOTE(size,field_name))
+
+2004-08-09 Martin Quinson
+ Version 0.5 (protocol not changed; ABI changed)
+ - Allow to off turn the cycle detection code in data exchange at
+ compilation time. It should be at run time, but I'm short of time (and
+ the config stuff is still broken). That way, we keep dict out of the
+ critical path, which is good because the performance is poor:
+ - search not dichotomial yet
+ - dynar give no way to access their content and memcpy everytime
+ - 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
+ 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.
+ - Use a whole bunch of optimisation flags (plus -fno-strict-aliasing since
+ it breaks the code because of type-punning used all over the place).
+ This breaks on all non-gcc architectures (for now).
+
+ All those changes (plus the buffer of last time) allow me to gain 2 order
+ of magnitude on cruel tests consisting of 800000 array of integers on two
+ level of a hierarchical structure (200 secondes -> 4 secondes)
+
+ API change:
+ - the selector of reference must now return the type it points to, not
+ the ID of this type.
+
+2004-08-06 Martin Quinson
+ Version 0.4 (protocol changed; ABI not changed)
+ - Allow to pass --gras-log argument to processes in simulation mode. Really.
+ - New debugging level: trace (under debug) to see effect of GRAS_IN/OUT
+ - Implement a buffer transport, and use it by default (it relies on tcp in
+ real life and on sg in simulation).
+ That's a bit hackish since I had a new field to the structure to store
+ its data without interfering with the subtype ones. Inheritance
+ is tricky in C. And that's a kind of reverse inheritance with one class
+ derivating two classes. Or maybe a game with java interfaces. Anyway,
+ that's damn hard in C (at least).
+ Moreover, I got tired while trying to ensure plugin separation and
+ genericity in SG mode. MSG wants me to do weird things, so let's go for
+ cruel hacks (temporarily of course ;).
+ See comment in transport_private.h:71
+ - do not include all the _interface headers in private but in the files
+ which really need them (to cut the compilation time when they are
+ modified)
+
+2004-07-26 Martin Quinson
+ Version 0.3 (protocol not changed; ABI changed)
+ - Major overhault of the datadesc interface to simplify it:
+ - shorted the function names:
+ s/gras_datadesc_declare_struct/gras_datadesc_struct/ and so on
+ - add a trivial way to push/pop integers into the cbps without malloc.
+ This allows to make really generic sub_type description, which simply
+ pop their size of the stack.
+ - add a function gras_datadesc_ref_pop_arr() which does what users want
+ most of the time: Declare a dynamic array (which pops its size of the
+ stack) and declare a reference to it. Poor name, but anyway.
+ - kill the post-send callback, add a post-receive one
+
+2004-07-23 Martin Quinson
+ Version 0.2 (protocol changed; ABI changed)
+ - add some testing for cpbs in the test cases, and fix some more bugs.
+ This invalidate again the little64 data file, since I cannot regenerate
+ it myself.
+ - remove an awfull optimization in the logging stuff, allowing me to:
+ - understand it again
+ - learn gcc how to check that the argument match the provided format
+ - fix all errors revealed by gcc after that
+ - internal keys of dict are not \0 terminated. Deal with it properly in
+ loggings instead of segfaulting when the user want to see the logs :-/
+
+2004-07-22 Martin Quinson
+ - Fix some stupid bug preventing cbps (callback postit) from working
+
+2004-07-21 Martin Quinson
+ - Some documentation cleanups
+ - remove the useless last argument of msgtype_declare
+ - rename the Virtu functions to fit into the 'os' namespace
+ - move headers src/include -> src/include/gras/ and stop fooling with
+ gras -> . symbolic link
+ - make distcheck is now successful
+
+2004-07-19 Martin Quinson
+ Version 0.1.1
+ - Build shared library also
+ - Install html doc to the right location
+ - stop removing maintainer files in make clean
+ - build tests only on make check
+
+2004-07-13 Martin Quinson
+ version 0.1
+ - No major issue in previous version => change versionning schema
+ - Re-enable little64 convertion test now that Abdou kindly regenerated the
+ corresponding dataset.
+
+2004-07-11 Martin Quinson
+ version 0.0.4
+ - Get it working with any kind of structure (we can compute the padding
+ bytes remotely for all the architectures I have access to)
+ - Implement the structure parsing macro (still not quite robust/complete)
+ - Improvement to the remote testing toysuite
+
+2004-07-10 Martin Quinson
+ [autoconf mechanism]
+ - get ride of a bunch of deprecated macros
+ - actually run the test for two-compliment, not only compile it :-/
+ - test whether the structures get packed (and bail out if yes. Damn.
+ Alignment is a serious matter)
+ - test whether the structures get compacted (but respecting the alignment
+ constraints of each types)
+ - test whether the array fields of structures can straddle alignment boundaries
+ [base]
+ - Damnit, double are bigger than float (typo in creation of 'double' datadesc)
+ (took me 2 hours to find that bug, looking at the wrong place)
+ - Add gras_datadesc_declare_{union,struct}_close(). They must be used
+ before sending/receiving and are used to compute the offsets of fields
+ - Given that padding size depend even on compiler options, keep track of
+ alignment and aligned_size only for the current architecture. Not a big
+ deal since we send structure fields one after the other (seems
+ reasonable).
+ - Add the datastructure used for IEEE paper by the PBIO guys to the test
+ program, let it work on linux/gcc/little32. portability todo.
+
+2004-07-08 Martin Quinson
+ - import and improve remote compilation support from FAST
+ - make sure make check works on half a dozen of machines out there
+
+2004-07-07 Martin Quinson
+ Let's say it's version 0.0.3 ;)
+ - Implement conversions (yuhu!)
+ - Let it work on solaris (beside conversion, of course)
+ - Stupid me, using rand() to generate the conversion datatests in not wise.
+
+2004-07-06 Martin Quinson
+ - Let make dist work, since I'm gonna need it to compile on remote hosts
+ - Let Tests/datadesc_usage write the architecture on which the file was
+ generated as first byte.
+ - Add PowerPC (being also IRIX64), SPARC (also power4) and ALPHA
+ architecture descriptions.
+ - Add datadesc_usage.{i386,ppc,sparc} files being the result of execution
+ on those architectures.
+ - Optimization: send/recv array of scalar in one shoot
+
+2004-07-05 Martin Quinson
+ - YEAH! GRAS/SG and GRAS/RL are both able to run the ping example !
+
+ - Plug a whole bunch of memleaks
+ - each process now have to call gras_{init,exit}. One day, their log
+ settings will be separated
+ - Continue the code factorisation between SG, RL and common in Transport.
+
+2004-07-04 Martin Quinson
+ [Transport]
+ - Redistribution between SG and RL.
+ We wanna have to accept in SG, so move accepted related parts of RL in
+ the common part. (more precisely, the dynar of all known sockets is no
+ more a static in transport.c, but part of the process_data)
+ [Core/module.c]
+ [gras_stub_generator]
+ - Bug fix: Do call gras_process_init from gras_init (wasnt called in RL).
+
+2004-07-03 Martin Quinson
+ - Create a new log channel tbx containing dict, set, log, dynar (to shut
+ them all up in one shot)
+ [DataDesc]
+ - Fix the ugly case of reference to dynamic array.
+ - New (semi-public) function gras_datadesc_size to allow the messaging
+ layer to malloc the needed space for the buffer.
+ [Transport]
+ - gras_socket_close now expect the socket to close (and not its address to
+ put NULL in it after it). This is because the socket passed to handlers
+ is one of their argument (=> not writable).
+ [Messaging]
+ - propagate the interface cleanup from last week in datadesc, ie remove a
+ superfluous level of indirection. User pass adress of variable
+ containing data (both when sending and receiving), and not of a variable
+ being a pointer to the data. Let's say that I like it better ;)
+ The price for that is constructs like "int msg=*(int*)payload" in
+ handlers, but it's a fine price, IMHO.
+ [examples/ping]
+ - Let it work in RL (yuhu)
+
+2004-06-21 Martin Quinson
+ [Transport]
+ - porting SG plugin and SG select to new standards (works almost).
+ - plug memleaks and fix bugs around.
+
+ [DataDesc]
+ - cleanup the prototype of data recv and force users to specify when they
+ want to handle references to objects. Test case working even for cycles.
+ - plug memleaks. Valgrind is perfectly ok with this.
+
+2004-06-12 Martin Quinson
+ [Transport]
+ - cleanup the separation between plugin and main code in plugin creation
+
+2004-06-11 Martin Quinson
+ [Transport]
+ - Reput hook for raw sockets, needed for BW experiments
+ - kill a few lines of dead code
+ [Data description] Interface cleanup
+ - gras_datadesc_by_name returns the searched type or NULL.
+ That way, no variable is needed to use a type desc once, which makes
+ the code clearer.
+ - gras_datadesc_declare_[struct|union]_append_name is removed. The last
+ two parameters were strings (field name, type name), leading to
+ common errors.
+ [Dicos] Interface cleanup
+ - gras_dico_retrieve -> gras_dico_get ; gras_dico_insert -> gras_dico_set
+ This is consistant with the dynar API.
+
+2004-04-21 Martin Quinson
+ [Messaging]
+ - Porting to new standards.
+ [Data description]
+ - interface cleanup.
+ There is no bag anymore, no need to take extra provision to mask the
+ pointers behind "ID".
+ Better splitup of functions between files create/exchange/convert.
+ This is still a bit artificial since convert and receive are so
+ interleaved, but anyway.
+ [Virtu(process)]
+ - add a queued message list to procdata (the ones not matching criteria
+ in msg_wait)
+ - factorize some more code between SG and RL wrt procdata
+ [Tests]
+ - use gras_exit in example to track memleaks
+ - get rid of gs_example now that GS is properly integrated into gras
+ - update run_test to integrate the lastest tests (datadesc)
+ [Logging]
+ - rename WARNINGn macros to WARNn since it prooved error-prone
+
+2004-04-19 Martin Quinson
+ [Data description]
+ - register init/exit functions within gras module mechanism
+ - send/receive function.
+ Convertion is not implemented, but short-cutted if not needed.
+ struct/array elements are sent one by one (instead of block-wise), but
+ nobody really cares (yet). Get a prototype before optimizing.
+ - tests (using a file socket) for DD send/receive on:
+ - base types: int, float
+ - array: fixed size, string (ie ref to dynamic string)
+ - structure: homogeneous, heterogeneous
+ - chained list, graph with cycle
+ Believe it or not, valgrind is not too unhappy with the results. The
+ cycle happily segfaults, but the others are ok. And I'm sick of pointers
+ for now.
+ [Transport]
+ [File plugin]
+ - Bugfix when using a filename explicitely (instead of '-')
+
+2004-04-09 Martin Quinson
+ [Transport plugins]
+ - factorize more code between RL and SG in socket creation
+ - Complete the implementation and tests of:
+ o TCP
+ o file (only in RL, and mainly for debugging)
+
+ I lost 3 days to design a portable address resolver, and then decided
+ that the prototype mainly have to run on my box.
+ Addressing portability too early may be like optimizing too early :-/
+ [Tests]
+ - use gras_init in the Tests instead of the crappy parse_log_opt
+ (the latter function is removed)
+ [Conditional execution]
+ - New functions: gras_if_RL/gras_if_SG (basic support for this)
+ [Code reorganisation]
+ - Get rid of libgrasutils.a since it makes more trouble than it solves.
+ Build examples against the RL library, since there is no way to disable
+ its creation for now.