We have just released SLiM 2.3. This is a major release with a bunch of new stuff:
- New feature: support for continuous space. Each subpopulation can now, optionally, define a spatially continuous area in 1, 2, or 3 dimensions, and individuals can occupy positions within that area as defined by new x, y, and z properties on the Individual class. Spatial maps can be defined that establish environmental values at spatial positions across that area – e.g., temperature, carrying capacity, or optimum phenotype. Extensive examples are given in the recipes in chapter 14 of the new SLiM manual.
- New feature: interactions. SLiM will now assist you in defining interactions between individuals, which can be non-spatial or can depend upon the positions of individuals in continuous space if that new feature is also used. It is simple to set up things like phenotype-based competition, spatial mate choice, etc., using this feature. A new Eidos class, InteractionType, is now available to model such interactions, and a new callback type, the interaction() callback, has been added to allow interactions to be modified with arbitrary Eidos script. Extensive examples are given in chapter 14 of the new manual.
- New feature: fitness() callbacks can now be defined to apply to a mutation-type of NULL, which makes them "global" fitness() callbacks that are called once per individual, regardless of the mutations possessed. Recipes 13.1, 13.3, 13.10, and some of the new recipes in chapter 14 now illustrate the use of this technique, which makes it unnecessary to use marker mutations in many situations that previously required them, such as additive QTL models.
- Policy change: readFromPopulationFile() no longer has the side effect of recalculating fitness values, and warns if it is called at a time other than a late() event. This tightens things up regarding how populations are saved and read back in, to avoid problematic issues related to the addition of interactions. If you rely on fitness values being calculated immediately by readFromPopulationFile(), or call it at a time other than a late() event, your script may need to change. As a side effect of this, the Import Population... command in SLiMgui has also been removed; if you want to import a population, use readFromPopulationFile() in your script.
- Minor change: outputFull() will now output positional information if continuous space is enabled, and readFromPopulationFile() will restore that information, making it easier to restart simulations using continuous space.
- Minor change: mateChoice() callbacks can now return a vector of all zero mating weights to reject the first parent, equivalent to returning float(0)
- Minor change: mateChoice() callbacks can now return a singleton Individual to indicate that that individual is to be chosen as the second parent, rather than having to create a whole mating weights vector, simplifying and speeding up some mate choice algorithms.
- Minor change: some color-conversion functions have been added to Eidos to allow conversion between RGB and HSV color systems, etc., making it easier to make models that look nice in SLiMgui when using spatial maps and other such features.
- Bug fixes: fixes for minor issues with code completion, syntax coloring, and the subset operator  in Eidos, none of which would have negatively affected simulations run in previous SLiM versions
- Optimizations: ifelse(), operator !, and mean() are now somewhat faster
You can obtain SLiM 2.3 from the SLiM home page at http://messerlab.org/slim/
; note that the manuals have also undergone major revisions.
If you have any questions, comments, etc., please use the slim-discuss group for that. Thanks, and happy modeling!