diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown index 6b3c9fca4..18a610350 100644 --- a/CHANGELOG.markdown +++ b/CHANGELOG.markdown @@ -2,10 +2,20 @@ All notable changes to this project will be documented in this file. -## Unreleased +## 2024-02-10 +### Added + * Added [Loop Hoisting](doc/syntax/SYNTAX-6-OPTIMIZATIONS.markdown#loop-hoisting) optimization. This optimization moves invariant code out of loops. +* Added new reserved keywords `elseif` and `elif`. Using these keywords will result in a compilation error (see + [#121](https://github.com/cardillan/mindcode/issues/121)). + +### Changed + +* Schemacode decompiler now ignores some block-specific configurations that aren't supported yet (see + [#122](https://github.com/cardillan/mindcode/issues/122)). This is a temporary measure to prevent the decompiler + crashing on such schematics until these configurations are fully supported. ## 2024-01-28 diff --git a/README.markdown b/README.markdown index b32a9e318..fb4651d60 100644 --- a/README.markdown +++ b/README.markdown @@ -6,7 +6,7 @@ Welcome to **Mindcode**, a high-level language for [Mindustry](https://github.co game in the tower-defense genre. Mindustry added Logic in late 2020. Logic is a programming language, closer to assembly than a high-level language. Mindcode aims to make Mindustry programming easier for everyone. -Mindcode development focuses of the following priorities: +Mindcode focuses of the following priorities: * Keeping terminology and naming convention close to Mindustry Logic. * Providing language constructs that are not prohibitively expensive given the astonishingly slow speeds diff --git a/ROADMAP.markdown b/ROADMAP.markdown index 86257da65..17e76aafd 100644 --- a/ROADMAP.markdown +++ b/ROADMAP.markdown @@ -14,6 +14,10 @@ This documents servers as a scratch pad to track ideas and possible enhancements # Incremental improvements +* Loop Hoisting improvements + * Support for list iteration loops + * Support for hoisting entire loop invariant if statements + * Support for hoisting parts of if statements (maybe) * Expand handling of expressions by the Data Flow Optimization: * handle multiplication by zero, multiplication/division by one, and addition/subtraction of zero directly (i.e. independently of the Expression Optimization). @@ -23,10 +27,10 @@ This documents servers as a scratch pad to track ideas and possible enhancements * Add factoring-out capability to more complex expressions. * Utilizing the new `id` property: * Schemacode - * replace the `Item` and `Liquid` enums with metadata, possibly utilize units). + * replace the `Item` and `Liquid` enums with metadata, utilize units. * Mindcode * recognize item/liquid built-in constants (possibly others), - * [Case switching over built-in constants](#case-switching-over-built-in-constants) + * [Case switching over built-in constants](#case-switching-over-built-in-constants). * Create a documentation about diagnosing and resolving syntax errors, duplicate it into a discussion # Other small or internal improvements @@ -306,7 +310,7 @@ Two basic approaches recognized as such. * Identify uninitialized global variables (now only reported when they are never written to; use the same logic as for main/local variables instead). -* Pulling invariant code out of loops/if branches. +* Pulling invariant code out of if branches. * Generalized constant folding on expression tree, including factoring constants out of complex expressions. * Instruction reordering for better constant folding/subexpression optimization * If an expression being assigned to a user variable is identical to a prior expression assigned to a temporary diff --git a/webapp/src/main/resources/templates/common.ftlh b/webapp/src/main/resources/templates/common.ftlh index 371ed948c..a51c40881 100644 --- a/webapp/src/main/resources/templates/common.ftlh +++ b/webapp/src/main/resources/templates/common.ftlh @@ -42,7 +42,7 @@ <#macro footer>