To install or update LODA, please follow the installation instructions. Here are the release notes:
- Improve negativity check in formula generation
- Simplify formulas generated from
nrt
operations
- Limited support for bit-wise operations in formulas
- Delete corrupt programs directory in BOINC
- Separate binaries for MacOS arm64
- Support
log
and nrt
operation in formula generation
- Internal command to clean up unused
mod
instructions
- Support for sequence offsets (extracted from the OEIS)
- Added
lex
operation (largest exponent)
- Fix optimizer bugs
- Fix program folding bugs
- Fix optimizer
prg
handling
- Fix max memory option
-m
- Fix program folding
- Support
prg
in unfold
command
- Internal
replace
command
- Remove deprecated dot export
- Collapse
mov
loops in optimizer
- Support for directives and
prg
instruction
- Incremental evaluator supports
max
on loop counter
- Fix hanging process on initialization errors
- Send miner alerts to Discord channel
- Improve BOINC progress monitoring
- Improve logs for b-file handling
- Optimizer: replace double
equ
by neq
- Remove invalid b-files from cache
- Fix default OEIS fetch setting
- Add comparison operations:
equ
(formerly cmp
),neq
,leq
,geq
- Add bitwise operations:
ban
, bor
, bxo
- Add digit operations:
dis
(digit sum), dir
(digital root)
- Add region operations:
clr
(clear), srt
(sort)
- Add
nrt
(n-th root) and log
(logarithm) operations
- Simplify generated formulas
- Fix memory leak in expression util
- Use floor/truncate functions in plain formulas
- Simplify formulas using Gaussian elimination
- Simplify sums and products in formulas
- Extended internal maintenance command
- Use more terms during minimization
- Support fetching resources directly from OEIS
- Fix errors during loading and saving of stats
- Added
fold
command to replace a subprogram by a seq
operation
- Incremental evaluator and formula generator support more programs
- Optimizer improvements
- Improve miner preferences regarding large constants
- Optimizer enhancements
- Improve miner preferences for better programs
- Disable reduced number of terms for exponential programs
- Detect programs with exponential complexity
- Remove Twitter support
- Support formulas when loop counter is not
$0
- Reduce minimum number of terms to 80
- Increase maximum number of steps to 100 million
- Formula generation supports pre-loop transformations and loop counter decrements >1
- Improved check for logarithmic program complexity
- Remove deprecated
clr
operation
- Require miner profile in submitted programs
- Stricter check for logarithmic program complexity
- Incremental evaluation supports loop counter decrements >1
- Optimizer removes "commutative detours"
- Fix hanging process (infinite loop)
- Detect optimization/minimization loops
- Auto-unfold
seq
operations
- Added option
-z
to limit the maximum evaluation time
- The
submit
command considers -i
option for better control and performance
- Improve output and behavior of generator v8 (reading programs from batch file)
- Improve decision for better/faster programs
- Fix decision making for simpler/faster programs
- Increase max memory and max number of steps
- Fix implicitly initialized cells in
unfold
command
- Improve reduction of constants in optimizer
- Improve decision for faster vs. simpler programs
- Retain
seq
comments in unfold
command
- Mining by reading programs from a batch file (generator v8)
- Faster
pow
operation
- Increase maximum number of steps to 60 million
- Extend maximum number of decimal digits to 1155
- Small enhancements in program mutator
- Added
unfold
command to embed called seqeunce programs
- Reduce default number of terms to 8 (include 10k more OEIS seqs)
- Selective auto-unfolding during program maintenance
- Prefer faster over IE for programs that are used a lot
- Improve decision for better programs
- Improve interpreter performance
- Increase maximum step count to 50 million
- Support more recursive formulas
- Metric for number of formulas
- Use local variables in generated PARI code
- Prefer IE programs with trivial post-loop code
- Improve log messages for processed programs
- Fix validation for IE programs
- Use transitive hash values for programs with
seq
- Add detection of programs with logarithmic complexity
- Add stats for incremental and logarithmic eval
- Fix decision making for better/faster programs
- Reduce server-side validation effort
- Introduce threshold for faster/better programs (5%)
- Increase maximum number of cycles to 30 million
- Increase default OEIS update interval
- Install script
- Update command
- Support more programs in incremental evaluation
- Increase maximum number of cycles to 25 million
- Tweet only for first programs
- Fix incorrect result of incremental evaluator
- Support more recursive formulas
- Internal command for finding slow programs
- Fix step count inconsistency
- Check maximum number of steps in incremental evaluator
- Avoid fixed number of 100 terms in
minimize
command; now configurable using -t
with default of 10 terms
- Support
seq
operation in formula generator
- Fix insecure fall-back option for
curl
- Support more recursive in formulas
- Support disabling of profiles
- Fix step count calculation
- Fix incremental evaluation
- Fix expression normalization
- Support
bin
, gcd
and trn
operations in formula generator
- Increase max interpreter cycles to 20 million
- Support incremental evaluation for more programs (from 9k to 15k programs)
- Activate incremental evaluation in validation
- Support
mod
, min
and max
in formulas
- Support recursive formulas for a small subset of IE programs
- Use
floor
instead of truncate
in PARI if possible
- Add insecure fall-back option for
curl
- Fix programs update interval
- Separate update intervals for OEIS files (7 days) and programs repository (1 day)
- New
export
command for converting programs to PARI/GP
- Add formulae to programs
- Optimizer collapses simple loops
- Forbid invalid number formats in parser
- Forbid indirect memory access with negative indices
- Log total system memory in BOINC mode
- Additional check to avoid duplicate program updates
- Internal
compare
command for checking if a program is faster/better
- Ignore
seq
arguments in constants stats
- Update BOINC progress after
git clone
- Fix programs directory check
- Optimizer merges repeated
add
and mul
operations
- Remove sequences from deny list in
no_loda.txt
- Increase default max memory cells to 1000 (for A000041)
- Minimizer tries to replace loops with constant number or iterations
- Include LODA version in hash of transmitted programs
- Improve decision for "faster" programs
- Internal command for generating program lists
- Increase max number of interpreter cycles to 15 million
- Improve decision for "better" programs
- Clear caches before comparing programs
- Fix race condition when creating directories
- Fix detection of recursive calls
- Delete invalid matches cache based on BOINC input flag
- Fix embedded
git
on Windows
- Fix CPU hour reporting using
wget
- Embedded
git
for BOINC on Windows
- Read parameters from BOINC task input
- Increase max number of interpreter cycles to 10 million
- Fix arithmetic exception
- Fix segmentation fault due to static linking problem
- Reduce max number of terms to 1000
- Print debug log message if CPU hour reporting fails
- Catch errors of progress monitoring thread
- Interrupt long-running evaluations if time limit is reached
- Fix handling of protected programs
- Fix progress monitor for native mining (non-BOINC)
- Fix escaping in Slack messages and metric labels
- Include progress information in logs
- Simplify comparison of programs (better/faster)
- Force stats regeneration after OEIS and programs update
- Fix error message in
check
command
- Improve handling of loops with constant number of iterations
- Improve detection of fake "better" programs
- Disable incremental evaluation in
check
command for consistency
- Adjust maximum big int size to handle A000336
- Add username to program count metrics
- Log
hostid
in BOINC mode
- Improve server-side program validation
- Reduce update interval to 1 day
- Fix issue where tasks are stuck at 100% progress
- Support
full_check.txt
list for sequences that require checking up to 100k terms
- Fix basic validation for updated programs
- Skip unnecessary sequence matching in server mode
- Support for reduced ("basic") validation on the server
- Reduce file size of executable on Linux and MacOS
- Extend folder locking time out value on Windows
- Remove fall-back download from OEIS
- Checkpoint support for BOINC
- Change default update interval to 3 days
- Throttling and exponential backoff for API server downloads
- Fix "access denied" error during stats generation on Windows.
- Use project dir as fall-back for tmp dir
- Fix various errors in BOINC on Windows
- Improve progress monitoring in BOINC
- Fixes setup issues when runing in BOINC
- Use shared project directory when running in BOINC
- Extract user name from BOINC metadata
- Report progress to BOINC wrapper app
- Added option
-H
for settings the number of mining hours (needed for BOINC)
- Internal
boinc
command
- Use 50% of the new and 50% of the last modified programs for mutations
- Added
profile
command for measuring program evaluation time
- Added pattern-based generator (generator:
v7
, miner profile: pattern
)
- Improve handling of programs with minimization errors/warnings
- Improve comparsion of programs supporting IE
- Improve algebraic program optimizations
- Avoid duplicate evaluation when updating programs
- Fix reporting of CPU hours (active miners) in parallel mining mode
- Ignore updates of recently found new programs
- Reduce maximum number of terms in validation to 4000
- Omit expensive comparison for new program
- Prefer programs that support incremental evaluation
- Optimizer does not consider
$1
as reserved cell anymore (formerly output cell)
- Validator does not remove operations anymore that are needed for computing more terms
- Fix corner case in big integer comparison
- Track manually submitted programs in the miner profile metric
check
command accepts program files as argument (extracts A-number from comment in programs)
- Improved operation sorting in optimizer
- Improved output during updates on Windows
- Parallel mining with custom number of instances:
-P <number>
- Short-hand parameter for b-file output with offset 0:
-b
submit
command extracts A-number from comment in programs
- Incremental evaluation (IE) partially supports programs with non-commutative updates of output cells. IE is supported for 5200 programs now.
- Store default values in
setup.txt
- Universal macOS binary for Intel (x86-64) and Apple M1 processors (ARM64)
- Statically linked binaries for Linux:
loda-linux-x86
: for Intel/AMD x86. Replaces dynamically linked Ubuntu binaries.
loda-linux-arm64
: for ARM64 processors. Compatible with Raspberry Pi OS (64-bit).
- Fix two issues during update installation on Windows
- Fix program submission error (#106)
- Fix profile name in submitted programs
- New metric: number of received programs per miner profile
- Automatically replace executable during updates on Windows
- Optimizer supports partial evaluation inside of loops
- Incremental evaluation (IE) partially supports programs with
seq
operations (IE supports 2300 programs now)
- Don't use IE in maintenance mode (to detect bugs)
- Fix race condition:
curl: (23) Failed writing body
when fetching session ID from API server
- Fix suppressed debug logs for
eval
command
- Improved performance of simple loops using incremental evaluation (IE). Uses static code analysis to decide whether IE can be applied for a given program. Currently, about 1370 programs fulfill these reqirements. Benchmark of selected programs:
Sequence |
Terms |
Reg Eval |
Inc Eval |
A057552 |
300 |
5.11s |
0.05s |
A079309 |
300 |
5.08s |
0.05s |
A012866 |
1000 |
2.80s |
0.01s |
A000045 |
2000 |
6.13s |
0.01s |
A130487 |
5000 |
8.16s |
0.01s |
- Extend timeout for folder locking on Windows
- Retrieve OEIS files from cache on API server
- Improve setup: ask for usage statistics and clean up existing settings.
- Escape characters in generated program lists (Markdown format)
- Built-in parallel mining command:
loda mine -p
(replaces mine_parallel.sh
script)
- New metrics for counting program submissions and miner activity
- Boost performance of program list generation
- Improve mining performance by ignoring duplicate matches
- Improve performance of server-side processing of submitted programs
- Integrate program maintenance into server-side miner loop (removes
maintain
command)
- Reduce memory consumption of generator v1
- Improve scheduling of multi-generator
- Improve cache handling of interpreter and matcher
- Less mining in server mode (focus on submitted programs)
- Fix optimizer and minimizer bugs involving indirect memory access
- Automatic clean up of local programs in client mode (not on Ubuntu 18)
- Configurable mutation rate for generator v6
- New metric for removed programs
- Remove broken generator and matcher metrics
- Prefer latest programs for mutations
- Improve usability of setup
- Fix program submission error
- Improve scheduling and logging
- Improve error handling on API client errors
- Fix
git
commands if there are spaces in the path
- Adjust semantics of conditional division:
dif(x,0) = x
- Retry program submissions on connection errors
- Improve Slack and Twitter error handling
- Improve logging when stats generation is slow
- Remove Windows return characters from comments
- Windows support (no
mine_parallel.sh
equivalent yet)
- Reduce metrics publish interval to reduce load on InfluxDB
- Setup supports configuration in
zsh
environment (macOS)
- Fix race condition during program submission
- Setup asks for update interval for OEIS files and programs repository
- Limit the length of the terms comment in generated programs
- Generator v1 also uses mutator (if templates are defined)
- Clean up fetched program files in server mode
- Avoid programs with loops with constant number of iterations
- Define
gcd(0,0) = 0
instead of infinity
- Check for updates and remind user via log message
- Submit minimized and formatted programs in client mode
- Optimize server-side processing of submitted programs
- Improve decision for "better" programs
- Improve scheduling and event logging
- Extend big number range of b-file sequence terms
- Support custom miner configuration file
miners.json
- Auto update default miner configuration file
miners.default.json
- New program generator (v6) which mutates existing programs
- Improved program fetching in server mode
- Generalized mutations of new programs
- Improve scheduling and event logging
- Fix crash during update using
setup
command on Ubuntu
- Fix
submit
command: overwrite existing programs if faster/better
- Fix decision on faster/better programs for short sequences
- Fix early overflow in
pow
operation
- Miner profile
update
uses overwrite mode all
- Added
submit
command to check and transfer hand-written programs.
- Fix error in
mine_parallel.sh
: loda executable not found
- Publish programs and sequence metrics after stats loading
- Removed hard-coded checks for special sequences (Collatz)
- Big number format uses 64-bit words: faster and larger range
- Updated default miner configuration
- Enhanced benchmark for comparing releases:
Sequence |
Max Terms |
Time for 100 Terms |
A000796 |
316 |
139.2ms |
A001113 |
319 |
123.1ms |
A002110 |
339 |
112.4ms |
A002193 |
119 |
2752.1ms |
- Fix start-up error
Error parsing line...
(#36)
- Add optional "Submitted by ..." comments in mined programs.
- Setup automatically installs and updates
mine_parallel.sh
script and default miner configuration.
- Setup checks for updates and installs them on demand.
- Optimized server-side processing of submitted programs.
- Regularly update OEIS index and programs folder, and regenerate stats. No more restarts of miner processes needed.
- Benchmark:
Sequence |
Max Terms |
Time for 100 Terms |
A000796 |
283 |
153.1ms |
A001113 |
286 |
133.9ms |
A002110 |
309 |
118.5ms |
A002193 |
106 |
3566.6ms |
- Fix memory usage statistics on MacOS (Big Sur).
- Introduced mining modes: local, client and server mode. In the client mode (default), miners automatically submit their findings to a central server. Clients don't need to create pull requests anymore to contribute programs.
- Change maximum memory usage with the setup command.
- Support for multiple web clients:
curl
(default) and wget
.
- Migrated environment variable configuration to
loda/setup.txt
.
- Improved messages and usability of the setup command.
- Replace
match
command by extending mine
with an optional argument.