-
Notifications
You must be signed in to change notification settings - Fork 0
Patch notes
Marek Sedláček edited this page May 14, 2022
·
33 revisions
xx/xx/2022
14/05/2022
- 🎆 VERSION 1.0! 🎆
13/05/2022
- Support for string values in user defined expressions - value replacement
- User defined expression can now contain a string in quotes (
"
), which will be moved to the specified position, just as if using NUMBER or FLOAT. - Such string can contain any type, meaning it can contain even delimiters, symbols, floats.... But note, that this is then takes as a single word and using for example
RETURN SWAP 42
will swap all of the values placed. - E.g.:
{! "Hello" !}
or even{! "Hello there 3.14!" !}
.
- User defined expression can now contain a string in quotes (
- Support for FLOATs in user defined expressions
- Support for FLOATs in Ebel expression passes
- New engine Taylor (
-E Taylor
)- Taylor uses NOP TAIL and only mutations to find fitting program.
- This engine is somewhat experimental, but might have better results in some cases, it's overall performance was worst on benchmarks comparing to the current Jenn engine.
22/02/2022
- 🎆 PUBLIC RELEASE! 🎆
21/02/2022
- Complex Ebel generation and overall GP approach improvements
- Better terminal argument parsing
- All constraints are now checked and prints better messages.
- Parsing complexity improved.
- New program options and some changes to old ones
- Ebel output (previously
-o
) is now-eo
or--ebel-output
. -
-o
(--interpret-output
) is now for interpreter output, where it can be a file (for 1 input file) or a folder (for multiple input files) -
-x
,--seed
,--sym-table-size
,--no-warn-print
,--no-error-print
,--no-info-print
,--no-fatal-print
- For more information see argument page on wiki.
- Ebel output (previously
- Fall through expression passes
- If expression type is not matched, then it falls through to the next expression pass.
- If no more fall through is possible then NOP is executed.
- This allows to filter words by type.
- Match expression pass
- Won't match based on word's type but based on its value.
- Syntax is just as for type, but type is now a string in double quotes (
PASS "42" Expression
).
- Ebel pragmas
- Interpreter settings can be now set using "pragmas".
- Pragma is declared using
@pragma
keyword and all pragmas have to be declared before Ebel instructions. The keyword is then followed by pragma name and arguments for it, where quotation marks might be used to include whitespace (which is the separator). Example:@pragma requires 0.2.5
.
- Pragma
requires
- Throws fatal error if current Ebe version does not meet specified version. If a subversion is left out, zero is used. Example:
@pragma requires 0.2
.
- Throws fatal error if current Ebe version does not meet specified version. If a subversion is left out, zero is used. Example:
- Pragma
sym_table_size
- The same as
--sym-table-size
option - sets symbol table size. Example:@pragma sym_table_size 42
.
- The same as
02/02/2022
- Minimum precision compilation option
- Can be set for compilation with
-p
or--precision
option, which can be followed by whole number from 1 to 100 representing the minimum desired program precision as percentage. - If the value is not provided, then 100 is used.
- Using this option ignores
-e
(number of evolutions) option.
- Can be set for compilation with
- Compilation timeout
- Can be set for compilation with
-t
or--timeout
option followed by timeout time in seconds. - The counting starts from the start of Ebe, but gets checked only in compilation process, meaning that it might take longer to stop the compilation.
- Works also with precision, but timeout has higher priority.
- Can be set for compilation with
- Compilation displays now overall compile time.
- New fitness functions
- Can be chose using
-f
or--fitness
option followed by name of the function. -
one2one
/121
- does exact match. Fast, but not very good. -
levenshtein
/lev
- Levenshtein distance algorithm. -
jaro
- Jaro distance algorithm. -
jaro-winkler
/jw
- Jaro-Winkler distance algorithm. Doesjaro
and for higher precision values does additional computation for more precise fitness.
- Can be chose using
01/12/2021
- Flex and bison support to more easily define custom lexers and parsers.
- Expression support
- New expression sequence that can appear in text files.
- Ebel expression pass and arithmetic instructions for NUMBER type.
- License added (MIT license).
- Better error messages.
- Optimizations for compile generated code.
25/10/2021
- Support for Doxygen (can be generated using
make docs
). - Option
-o
now works. - CMake support added for compilation of Ebe.
- Unit tests added to check for compiler correctness.
- UNICODE text support.
- Support for interpreting multiple files at once (output is still only stdout).
- To invoke this just put multiple files as last arguments in
-i
mode (ebe -i code.ebel f1 f2 f3 fn
).
- To invoke this just put multiple files as last arguments in
15/10/2021
- Advanced logging system.
- Multi-level logging (5 level currently).
- Logging can be enabled for certain functions using csv
file::function
format after-v
option.-v
can be nested or level number can be used (eg.-vvv
or-v3
).-DDISABLE_LOGGING
during compilation can be used to completely remove logging, which might be useful for faster processing. - Logging info has been added to functions for debugging.
- Scanner is now modular so that multiple scanners (for different file types) can be added.
- MiRANDa engine.
- Uses completely random program generation.
- Designed for statistical purposes not for real program compilation.
- New command line arguments added
-
--iterations
,-it
- Sets the number of iterations to be done (overriding engine's own settings). -
--evolutions
,-e
- Sets the number of evolutions to be done (overriding engine's own settings). -
--engine
,-E
- Sets what engine will be used (case insensitive).
-
21/08/2021
- Base engine implemented to support modular engines.
- Base genetic engine implemented (with some needed functionality like mutations and crossovers).
- Basic text engine (Jenn) with only text pass.
25/07/2021
- Text parsing.
- Ebel parsing.
- Interpreter with only stdout output.
- Argument handling