Skip to content

release notes

Jory Schossau edited this page May 29, 2020 · 5 revisions

Release 2020, May 27

This was a huge update, mostly reworking the build system for 1) ability for modules (like worlds) to easily include their own libraries they need, such as physics engines 2) a better user experience, the CI system, and reorganizing the code in preparation for MABE2.

Overview

  • python requirement and build system replaced by cmake + optional custom mbuild (shipped as binary) but MABE now works with the standard mkdir build, cd build, cmake .., make paradigm, which does not require mbuild.
  • mbuild now automates making new modules from template, or from copies of existing modules, or downloading modules from MABE_extras repository
  • project reorganized into code/ and tools/, build/ for cmake, and work/ for generated files like the executable and all executable-generated files.
  • c++17
  • AppVeyor & TravisCI replaced by Github Actions
  • As a consequence, now simply moving a module (specific brain or world, etc.) into or out of the MABE directory structure and rerunning the build system is all you need to alter the build with that module.

Details

  • minimum required c++17
  • minimum required CMake 3.13.3
  • moved all MABE source files into code/ dir
  • moved pythonTools to tools/
  • removed pythonTools/mbuild.py and all accompanying python utilities unique to mbuild
  • temporary build files and project files now created in build/ dir
  • final mabe executable now compiled to work/ dir where one should do their work
  • .gitignore updated to ignore build/ and work/ so you can continue to push and pull while doing work
  • Every module must now have a CMakeLists.txt file registering it with the build system, and defining how it is built and any software it relies on. See src/Utilities/Templates/CMakeLists.txt for a number of use case examples.
  • buildOptions.txt renamed to modules.txt
  • modules.h renamed and split into module_factories.h module_factories.cpp to fix the long-standing circular reference issue preventing certain module construction.
  • CMake now generates module_factories.* and Utilities/gitversion.h that were previously generated by python.
  • All builds now use all cores available by default, even if all you have is the Visual Studio compiler
  • single setup.cmd script you can run on windows, mac, or linux, that puts mbuild in the root MABE dir for you.
  • mbuild tool rewritten in Nim with the following new features:
    • binaries run on any distribution (linux, mac, windows) so no python needed
    • better streamlined experience (run mbuild, get mabe.exe)
    • ability to use an alternative arbitrary c++ compiler (cuda, pgi, openmp, etc.)
    • automatically keeps modules.txt up-to-date
    • create new modules like Brains and Worlds, installed and renamed for you
    • create new modules as copy of another module, installed and renamed for you
    • list, download, and install new modules from MABE_extras
    • generate IDE project files using CMake, which allows for more projects and better project features

The minimum workflow to get a compiled MABE, on Windows for instance, is now:

  • Install Visual Studio and CMake
  • Download and unzip MABE repo
  • terminal to MABE
  • tools/setup.cmd
  • cd work
  • mbuild.exe

This also supports MSYS2 with gcc or clang on windows as before. On MSYS2 it will default to using GCC, then Clang, then Visual Studio in that order of availability, unless you force it to use a particular one.

Known Issues:

  • None of the MABE_extras have been updated yet to be compatible with the CMake build system, but it should be fairly trivial to do so, separately.
  • The Visual Studio CMake tool doesn't quite work right, so you'll need to install the cmake.org one.
Clone this wiki locally