Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
unPERLifies a bit the routing: use the object, not its name
[simgrid.git] / README.coding
index a2ea54f..4dd9610 100644 (file)
@@ -3,13 +3,18 @@
 **
 ******************************************************
 
-There is at least 4 sub-projects in the tree:
+There is at least 5 sub-projects in the tree:
 
  - XBT: eXtended Bundle of Tools (low-level toolbox: logging, datatypes).
  - SURF: a SimUlation aRtiFact. This is the simulation kernel.
  - MSG:  originally MetaSimGrid, MSG is a simple distributed application
          simulator.
- - SMPI: Simulated MPI, to run MPI application using emulation technics.
+ - SMPI: Simulated MPI, to run MPI application using emulation technics;
+ - MC: model-checker;
+ - SIMIX: basix interface for simulated processes. This layer defines simcalls
+   (simulation calls) exposed to the simulated processes by the SIMIX "kernel".
+   This interface is used to implement the MSG, SMPI layers.
+ - SIMDAG;
 
 They are all in the same tree because they are complementary tools and
 having all of them in the same package makes the installation easier
@@ -23,15 +28,16 @@ The tree is not split on projects, but on file finality:
  src/include -> another location for protected headers. Used by SURF, and
                 other should be converted, since this is the Right Thing.
 
- testsuite/ -> The more test the better.
-               Same organization than src/ and include/
-               Tests are allowed to load some headers of the module they test.
-              All tests should be listed in run_test.in so that they get
-               run on 'make check'.
-
  examples/ -> Supposed to be copy/pastable by the user, so keep it clear and
                 avoid any kind of trick. In particular, do only include the
                 public headers here.
+
+ teshsuite/ -> The more test the better. Put in there any strange test
+               doing things that the users are not supposed to do,
+               just to see if our framework is robust to incorrect and
+               unusual behaviors. All tests written in this section
+               should leverage our tesh(1) utility.
+
 **
 ** Indentation standard
 **
@@ -40,11 +46,11 @@ The tree is not split on projects, but on file finality:
 Most files use the Kernighan & Ritchie coding style with 2 spaces of
 indentation. The indent program can help you to stick to it:
 
-indent -kr -l80 -nut -i2 -lps -npcs -br -brs -ce -cdw -bbo -npsl <myfile>
+indent -kr -l120 -nut -i2 -lps -npcs -br -brs -ce -cdw -bbo -npsl <myfile>
 
-The script ./tools/indent runs indent with the appropriate options.
+The script ./tools/internal/indent runs indent with the appropriate options.
 
-FIXME: this list of arguments is still to be discussed, maybe
+If you use Eclipse, please import the settings in ./tools/internal/eclipse-formating.xml
 
 **
 ** Type naming standard
@@ -82,24 +88,25 @@ bug. Please report it (or fix it yourself if you can).
 **
 *****************************************************
 
-MALLOC:
+MALLOC
  Don't use it, or you'll have to check the result (and do some dirty stuff
  on AIX). Use xbt_malloc (or even better, xbt_new) instead.
 
 SIZE_T (FIXME: obsolete?)
  If possible, avoid size_t and use unsigned long instead. If not,
  #include <sys/types.h> in all files manipulating size_t
- do cast it to unsigned long before printing (and use %lu)
+ do cast it to unsigned long before printing (and use %lu),
+ or use %zu.
+
+INTEGERS
+ Please avoid to use long ints.  This is the source of many compatibility
+ problems between 32 bits and 64 bits archs.  Either use plain ints (generally
+ 32 bits wide) or long long ints (64 bits wide, at least).  At last resort
+ consider using integer types defined in C99 by <stdint.h>.
 
 PRINTF pointer difference (FIXME: advertise %td instead?)
  printf ("diff = %ld\n", (long) (pointer2 - pointer1));
 
-INLINE functions
- The definition of a inline function must be visible when it is used.
- As such, an inline function should be defined (an not only declared)
- in header file (.h) with attributes 'static XBT_INLINE'.  It should
- not be defined in source file (.c).
-
 **
 ** Commenting the source: doxygen
 **
@@ -173,6 +180,13 @@ investigating the portability of the thing to windows.
       cmake -Denable_compile_optimizations=ON \
             -Denable_compile_warnings=ON
 
+* Your commit message should follow the git habits, explained eg here:
+  http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
+
+* When you add/remove files, and/or make changes in the lists of files to build,
+  please check that "make distcheck" still succeeds.  This is needed to ensure
+  that the generated archive is consistent.
+
 * If you want to debug memory allocation problems, here are a few hints:
   - disable compiler optimizations, to have better backtraces;
   - disable the mallocators, or it will be hard to match malloc's with