Next: , Previous: , Up: Top   [Contents][Index]


2 Implementation

The Software Evolution library is implemented in Common Lisp and is intended for use in Common Lisp programs. Figure 2.1 provides an overview of the Software Evolution object system, the specifics of which are given in remainder of this section.

                                                      search functions
 global variables                                     ----------------
 ----------------        +------------------+         incorporate
 *population*            |   *population*   |         evict
 *max-population-size*   |------------------|         tournament
 *tournament-size*       |      list of     |         mutate
 *fitness-predicate*     | software objects |         new-individual
 *cross-chance*          +------------------+         evolve
 *fitness-evals*                  |                   mcmc
 *running*                      +-+-+
                                | | |                 software methods
                         +------------------+         --------------
 evolve arguments        | software object  |         genome
 ----------------        |------------------|         phenome
 max-evals               | edits,           |         copy
 max-time                | fitness          |         pick-good,pick-bad
 target                  | ...              |         mutate
 period                  +------------------+         crossover
 period-func                       |
 filter                            |
              +--------------------+-----------------------------------------+
              |                    |                                         |
     +-----------------+      +--------------+                      +------------------+
     |       IR        |      |    simple    |                      |    parseable     |
     +-----------------+      |--------------|                      +------------------+
     |  intermediate   |      | Basic Vector |                      |    Parsed AST    |
     | representation  |      |   Genome     |-----+                |  representation  |
     +-----------------+      +--------------+     |                +------------------+
                     |        |           |        |                                |
 +----------+        |        |           | +--------------+   +--------------+     |
 |   LLVM   |--------+    +------------+  | |    forth     |   |    clang     |-----+
 |----------|        |    |    ELF     |  | |--------------|   +--------------|     |
 | LLVM IR  |        |    |------------|  | | forth source |   | C/C++ source |     |
 +----------+        |    | Executable |  | +--------------+   +--------------+     |
 +----------------+  |    |  Linkable  |  |                                         |
 |       CIL      |--+    |   Format   |  |    +------------+  +--------------+     |
 |----------------|       +------------+  +----|    asm     |  | common-lisp  |-----+
 | C Intermediate |   +----------+   |         |------------|  +--------------+     |
 |    Language    |   | elf-risc |---+         |  assembly  |                       |
 +----------------+   +----------+   |         |    code    |  +--------------+     |
                      +----------+   |         +------------+  | tree-sitter  |-----+
                      | elf-cisc |---+               |         +--------------+
                      +----------+                   |                |
                                        +------------------+   +----------------------+
                                        |    asm-range     |   | agda bash c c-sharp  |
                                        |------------------|   | cpp css go html java |
                                        | memory efficient |   |   javascript jsdoc   |
                                        +------------------+   | json julia ocaml php |
                                                               | python ql regex ruby |
                                                               |    rust scala        |
                               mixin classes                   |     typescript       |
                             -----------------                 +----------------------+

       +------------+ +-----------+ +-----------+ +------+ +------------+
       | Searchable | | Ancestral | | Styleable | | File | | Compilable |
       +------------+ +-----------+ +-----------+ +------+ +------------+
              |                                       |
         +----------------------+           +-------------------+
         | Fodder Database, ... |           | File-w-attributes |
         +----------------------+           +-------------------+

Figure 2.1: Software Evolution API. Exported functions and variables are shown along with the software object class hierarchy.


Next: , Previous: , Up: Top   [Contents][Index]