-
Notifications
You must be signed in to change notification settings - Fork 24
release notes
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/
andtools/
,build/
for cmake, andwork/
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.
home
welcome
MABE Parameter Widget
Installation and quick start
license
citations
release notes
developer contributions
consistency testing
Using MABE
Using Settings Files
Output Files
Creating Graphs with python
MABE framework
Defining Update
Brains
Markov Brain
Neuron Gate
Wire Brain
Human Brain
ConstantValues Brain
CGP Brain
Genetic Programing Brain
Artificial Neural Networks
Brains Structure and Connectome
Genomes
Circular Genome
Multi Genome
Genome Handlers
Genome Value Conversions
Organisms
Groups
Archivists
popFileColumns
Optimizers
Lexicase Optimizer
Worlds
Berry World
ComplexiPhi World
MultiThreadTemplate World
Utilities
DataMap
Parameters
Parameters Name Space
Adding Parameters to Code
ParametersTable
MTree
sequence function
Population Loading
PythonTools
MBuild
MGraph
MQ
findRelatedness
generatePhylogeny
Information Theory Tools
Brain States and Life Times
TimeSeries
Entropy Functions
Smearing
Fragmentation
State to State
Brain Infomation Tools
ProcessingTools