Next: Software Methods, Previous: Implementation, Up: Implementation [Contents][Index]
The Software Evolution Library represents software as software
objects which all inherit from the base sel:software class.
Currently many subclasses of software are defined. These classes may
inherit from other software sub-classes, e.g. most tree-structured
source code software objects inherit from the sel/sw/ts:tree-sitter class.
The inheritance tree of software objects is shown graphically in
Figure 2.1.
Table Table 2.1 lists the existing software object classes with an indicate of their relative maturity.
| Software type | SEL Class | Maturity |
|---|---|---|
| Source Code using Tree-Sitter | sel/sw/ts:tree-sitter | mature |
| C and C++ source using Clang | sel/sw/clang:clang | mature |
| Common Lisp | sel/sw/lisp:lisp | mature |
| compiled assembler (ASM) | sel/sw/asm:asm | mature |
| linked ELF binaries | sel/sw/elf-cisc:elf-cisc | mature (not recommended) |
| LLVM IR | sel/sw/llvm:llvm | experimental |
| CIL | sel/sw/cil:cil | experimental |
| Forth | sel/sw/forth:forth | experimental |
| Coq source | sel/sw/coq:coq | experimental |
Table 2.1: Supported software objects listed with relative maturity.
These classes may also inherit from mixin classes which provide additional functionality which may be re-used across multiple software object classes. Detailed descriptions of important software object classes and mixins (which may be added to a software objects inheritance tree to provide additional functionality) are described in the following subsections.
Software Object Classes | ||
|---|---|---|
• Source Code with tree-sitter | Source code ASTs for many languages | |
• C/C++ with clang | C language source code ASTs | |
• Assembler with asm | Assembler represented as a vector | |
• Coq with coq | Coq language source code ASTs | |
Software Object Mixins | ||
• Ancestor tracking with ancestral | Collect history of applied mutations and crossover events. | |
• Lighter asm alternatives light/range/diff |
Lighter weight alternatives to
simple software.
| |
• Inherited Indentation indentation | Maintain correct indentation across mutations. | |
| • Software Methods | Methods on software objects | |
Next: Software Methods, Previous: Implementation, Up: Implementation [Contents][Index]