Skip to content

Commit bca9cf3

Browse files
committed
Release 3.14.0
Documentation
1 parent 3369b30 commit bca9cf3

11 files changed

Lines changed: 44 additions & 41 deletions

File tree

CHANGELOG.markdown

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
77
## 3.14.0 – Unreleased
88

99
> [!NOTE]
10-
> [Atomic code execution](doc/syntax/REMOTE-CALLS.markdown#atomic-code-execution) are only guaranteed to execute correctly in the latest BE version (build 26658 or higher). The latest beta release (v154.3) doesn't provide necessary support for atomic code execution.
10+
> [Atomic code execution](doc/syntax/REMOTE-CALLS.markdown#atomic-code-execution) are only guaranteed to execute correctly in the latest BE version (build 26658 or later). The latest beta release (v154.3) doesn't provide necessary support for atomic code execution.
1111
1212
> [!NOTE]
1313
> The new [Mlog Watcher functionality](doc/syntax/TOOLS-MLOG-WATCHER.markdown) available with the tool app requires a new version of the Mlog Watcher mod. The new version has not yet been released, but a Mindustry 8-compatible build is available [here](https://github.com/Sharlottes/MlogWatcher/actions/runs/21562595822). To use that version, the `--watcher-version v1` command line argument must be specified.
@@ -26,7 +26,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
2626
* Added support for nested atomic sections and atomic function calls from an atomic section. The entire topmost atomic section is executed atomically.
2727
* Added support [atomic section merging](doc/syntax/REMOTE-CALLS.markdown#atomic-section-merging). The duration limit of a merged section can be specified using the [`atomic-merge-level` compiler option](/doc/syntax/SYNTAX-5-OTHER.markdown#option-atomic-merge-level) (one tick by default).
2828
* Added a [`atomic-safety-margin` compiler option](/doc/syntax/SYNTAX-5-OTHER.markdown#option-atomic-safety-margin). No safety margin is necessary with the latest Mindustry BE build, though.
29-
* Added support for the new version of [Mlog Watcher mod](/doc/syntax/TOOLS-MLOG-WATCHER.markdown) in the tool app. To use the new Mlog Watcher mod, the `--watcher-version v1` command-line argument needs to be specified.
29+
* Added new tool app functionalities:
30+
* Support for the new version of [Mlog Watcher mod](/doc/syntax/TOOLS-MLOG-WATCHER.markdown), providing several useful new ways to send or extract mlog code and schematics to/from a running game. To use the new Mlog Watcher mod, the `--watcher-version v1` command-line argument needs to be specified.
31+
* Ability to execute mlog code loaded from a file on the processor emulator and for sending it to the Mlog Watcher. Use the new `pm` or `process-mlog` command-line argument.
32+
* Ability to execute schematics loaded from a file on the processor emulator and for sending it to the new version of the Mlog Watcher. Use the new `ps` or `process-schematic` command-line argument.
3033
* Added a validation step to the compiler to verify the generated code doesn't exceed the maximum number of instructions. The [`enforce-instruction-limit` compiler option](/doc/syntax/SYNTAX-5-OTHER.markdown#option-enforce-instruction-limit) can be used to control this behavior.
3134

3235
### Changed
@@ -1080,7 +1083,7 @@ Experimental features may contain bugs, break existing code or produce suboptima
10801083
* Added support for multiple loop variables in [list iteration loops](doc/syntax/SYNTAX-3-STATEMENTS.markdown#list-iteration-loops). Each iteration processes as many elements from the list as there are loop variables.
10811084
* Added an `out` keyword to be used with loop control variables in list iteration loop, allowing [list elements to be modified](doc/syntax/SYNTAX-3-STATEMENTS.markdown#modifications-of-variables-in-the-list).
10821085
* Added a new GUI option to choose an optimization level in the web app when compiling Mindcode or building Schemacode.
1083-
* Added a capability to run the compiled code on an emulated processor, by using a `Compile and Run` button in the web app, or the [`--run` command line option](doc/syntax/TOOLS-CMDLINE.markdown#running-the-compiled-code). The output is shown in a separate control in the web app or written to the log when using the command line tool.
1086+
* Added a capability to run the compiled code on an emulated processor, by using a `Compile and Run` button in the web app, or the [`--run` command line option](doc/syntax/TOOLS-CMDLINE.markdown#running-mlog-code-or-schematics). The output is shown in a separate control in the web app or written to the log when using the command line tool.
10841087
* Added a capability to the command line tool to compile several source files at once using the [`--append` command line argument](doc/syntax/TOOLS-CMDLINE.markdown#additional-input-files).
10851088
* Added new optimization level, `experimental`. When using this setting, the [Data Flow optimizer](doc/syntax/optimizations/DATA-FLOW-OPTIMIZATION.markdown) doesn't assume the assignments to global variables might be changed by editing the compiled code, allowing performing more optimizations on them. Program parameters must be used instead of global variables for program parametrization if this optimization level is used.
10861089
* Added [formattable string literals](doc/syntax/SYNTAX.markdown#formattable-string-literals), which allow formatting outputs of the `print` and `println` functions the same way as `printf` does.
@@ -1634,7 +1637,7 @@ Note: the bug fixed in this release only affects the command line tool. The web
16341637
and in the command line tool, so the change doesn't break existing code.
16351638
* Added support for the reintroduced `ucontrol pathfind` instruction. When issued, navigates the current unit to a given
16361639
location using AI to avoid obstacles. See [`ucontrol`](doc/syntax/FUNCTIONS-71.markdown#instruction-unit-control).
1637-
* Added command line options for [Schematic Decompiler](doc/syntax/TOOLS-CMDLINE.markdown#decompile-schematic-action-help)
1640+
* Added command line options for [Schematic Decompiler](doc/syntax/TOOLS-CMDLINE.markdown#process-schematic-action-help)
16381641
to specify order in which blocks are written to the schematic definition file and when to generate the `facing`
16391642
directive.
16401643
* Added support for [color configuration](doc/syntax/SCHEMACODE.markdown#color-configuration) and

README.markdown

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Mindcode can generate code for several Mindustry versions. The target can be sel
3030
At this moment, target `8` (or `8.1`) is also fully compatible with the latest Mindustry versions (154.3 Beta or BE build 26613).
3131

3232
> [!NOTE]
33-
> The [atomic code blocks](doc/syntax/REMOTE-CALLS.markdown#atomic-code-execution) are only guaranteed to execute correctly in the latest BE version (build 26609 or higher). The latest beta release (v154.3) doesn't provide necessary support for atomic code blocks.
33+
> The [atomic code blocks](doc/syntax/REMOTE-CALLS.markdown#atomic-code-execution) are only guaranteed to execute correctly in the latest BE version (build 26658 or later). The latest beta release (v154.3) doesn't provide necessary support for atomic code blocks.
3434
3535
[Here](/doc/syntax/MINDUSTRY-8.markdown#new-functionality-in-mindustry-8) is a summary of the new Logic content and corresponding Mindcode functionality in Mindustry 8.
3636

@@ -54,7 +54,7 @@ The most important recent changes to Mindcode include:
5454

5555
* Mindustry Logic 8
5656
* Complete support for [the latest Mindustry 8 pre-release](/doc/syntax/MINDUSTRY-8.markdown).
57-
* [Atomic code blocks](doc/syntax/REMOTE-CALLS.markdown#atomic-code-execution) guaranteed to be executed atomically – without interruption.
57+
* [Atomic code sections](doc/syntax/REMOTE-CALLS.markdown#atomic-code-execution) guaranteed to be executed atomically – without interruption.
5858
* Full support for [remote functions and variables](doc/syntax/REMOTE-CALLS.markdown).
5959
* [Array implementations](/doc/syntax/optimizations/ARRAY-OPTIMIZATION.markdown) using the Mindustry 8 Logic capabilities.
6060
* New string/character-based instructions and character literals.
@@ -98,7 +98,7 @@ The [Mlog Assertions mod](https://github.com/cardillan/MlogAssertions), availabl
9898

9999
To learn more about Mindustry Logic, you can find more information about it here:
100100

101-
* Yruei's [Mlog Documentation](https://yrueii.github.io/MlogDocs/) (last updated December 2025)
101+
* Yruei's [Mlog Documentation](https://yrueii.github.io/MlogDocs/) (last updated January 2026)
102102

103103
You can also get help on these Discord servers:
104104

doc/syntax/TOOLS-CMDLINE.markdown

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ After building the project, an executable jar file is created at `compiler\targe
1010
The command line tool supports three different actions. The action is specified by the first command line argument, which must be one of the following:
1111

1212
* `cm` or `compile-mindcode`: compiles a Mindcode source to mlog.
13-
* `dm` or `decompile-mlog`: partially decompiles an mlog code into Mindcode. The resulting code needs to be manually edited to create loops and conditions present in the original mlog.
13+
* `pm` or `process-mlog`: loads mlog code from a file or an in-game processor for further processing (partially decompiling into a Mindcode source, running on the internal emulator or sending to an in-game processor). In the case of decompilation, the resulting code needs to be manually edited to create loops and conditions present in the original mlog.
1414
* `cs` or `compile-schematic`: builds a schematic from a Schemacode source into a binary `.msch` file.
15-
* `ds` or `decompile-schematic`: decompiles a binary `.msch` file to a Schemacode source.
15+
* `ps` or `process-schematic`: loads schematic from a binary `.msch` file or the in-game Schematics Library for further processing (decompiling into a Schemacode definition file, running on the internal emulator or sending to the in-game library).
1616

1717
Command-line arguments (e.g., `--remarks`) are case-sensitive. Values of command-line options (e.g., `none`) are generally case-insensitive. It is possible to use both `--remarks none` and `--remarks NONE`, although the lower-case specification is preferred. All multi-word command-ine options use _kebab-case_ convention.
1818

@@ -38,7 +38,7 @@ The `-l` argument can be used to specify a log file, a file which receives messa
3838

3939
## Mlog Watcher integration
4040

41-
The command-line tool can send the compiled code directly into a processor in a running Mindustry game through the Mlog Watcher mod. See [Mlog Watcher](TOOLS-MLOG-WATCHER.markdown) for details.
41+
The command-line tool can send the compiled code or schematic directly into a processor in a running Mindustry game through the Mlog Watcher mod. See [Mlog Watcher](TOOLS-MLOG-WATCHER.markdown) for details.
4242

4343
## Clipboard integration
4444

@@ -47,15 +47,15 @@ When compiling Mindcode or building a schematic, the `-c` or `--clipboard` argum
4747
* _Compile Mindcode_ action: clipboard contains mlog instructions which can be pasted into a processor on the processor configuration screen, by using **Edit/Import from clipboard** command.
4848
* _Compile Schematic_ action: clipboard contains a schematic encoded into Mindustry Schematic string, which can be pasted as a new schematic on the Schematics screen, by using **Import schematic.../Import from clipboard** command.
4949

50-
## Running the compiled code
50+
## Running mlog code or schematics
5151

52-
When performing the _Compile Mindcode_ action, it is possible to use the `--run` command line option to run the resulting mlog code on an emulated processor. The processor is much faster than Mindustry Logic processors but supports only very few operations that interact with the Mindustry World.
52+
It is possible to use the `--run` command line option to run mlog code or schematic on a built-in processor/schematic emulator. The processor is much faster than Mindustry Logic processors but supports only very few operations that interact with the Mindustry World.
5353

5454
The behavior of the processor emulator can be further modified through the execution flags. For more details, refer to the [processor emulator](TOOLS-PROCESSOR-EMULATOR.markdown) documentation.
5555

5656
## Compiler options
5757

58-
Compiler options, such as target Mindustry Logic version and compiler optimizations, can be specified for _Compile Mindcode_ and _Compile schema_ actions. See the command line help for more details.
58+
Compiler options, such as target Mindustry Logic version and compiler optimizations, can be specified for the [Compile Mindcode](#compile-mindcode-action-help) and [Compile schematic](#compile-schematic-action-help) actions. See the command line help for more details.
5959

6060
# Command line help
6161

@@ -425,7 +425,7 @@ Emulator options:
425425
stop execution when a compiler-generated runtime check fails.
426426
```
427427

428-
## Decompile Mlog action help
428+
## Process Mlog action help
429429

430430
```
431431
usage: mindcode pm [-h] [--output-mlog [OUTPUT_MLOG]] [--output-decompiled [OUTPUT_DECOMPILED]]
@@ -870,7 +870,7 @@ Emulator options:
870870
stop execution when a compiler-generated runtime check fails.
871871
```
872872

873-
## Decompile Schematic action help
873+
## Process Schematic action help
874874

875875
```
876876
usage: mindcode ps [-h] [--output-msch [OUTPUT_MSCH]] [--output-decompiled [OUTPUT_DECOMPILED]]

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<properties>
2525
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2626
<spring.version>6.2.0</spring.version>
27-
<revision>3.13.0</revision>
27+
<revision>3.14.0</revision>
2828
</properties>
2929

3030
<dependencies>

toolapp/src/main/java/info/teksol/mindcode/cmdline/ActionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ invoke an specific Mlog Watcher operation on the compiled mlog code (default: up
125125
upgrade-all send it to processors with the same or lower version on the active map
126126
force-update-all send it to processors matching program ID (regardless of the version)""";
127127

128-
case DECOMPILE_MLOG -> """
128+
case PROCESS_MLOG -> """
129129
use Mlog Watcher to obtain or send the mlog code from/to the game (default: update).
130130
extract load code from the selected processor in the game
131131
update send code loaded from a file to the selected processor""";
@@ -135,7 +135,7 @@ invoke an specific Mlog Watcher operation on the created schematic (default: upd
135135
update update the schematic with the same name in the schematics library
136136
add add a new copy of the schematic to the schematics library""";
137137

138-
case DECOMPILE_SCHEMA -> """
138+
case PROCESS_SCHEMA -> """
139139
use Mlog Watcher to obtain or send the schematic from/to the game (default: update).
140140
extract load schematic from the schematic shown on the info screen in-game
141141
update update the schematic with the same name in the schematics library

toolapp/src/main/java/info/teksol/mindcode/cmdline/ProcessMlogAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class ProcessMlogAction extends ActionHandler {
3636
Subparser appendSubparser(Subparsers subparsers, FileArgumentType inputFileType, CompilerProfile defaults) {
3737
Map<Enum<?>, CompilerOptionValue<?>> options = defaults.getOptions();
3838

39-
Subparser subparser = subparsers.addParser(ToolAppAction.DECOMPILE_MLOG.getShortcut())
39+
Subparser subparser = subparsers.addParser(ToolAppAction.PROCESS_MLOG.getShortcut())
4040
.aliases("process-mlog", "dm", "decompile-mlog")
4141
.description("Load mlog code from a file or an in-game processor for further processing (partially decompiling " +
4242
"into a Mindcode source, running on the internal emulator or sending to an in-game processor).")
@@ -59,7 +59,7 @@ Subparser appendSubparser(Subparsers subparsers, FileArgumentType inputFileType,
5959

6060
addOutputDirectoryOption(files);
6161

62-
addMlogWatcherOptions(files, ToolAppAction.DECOMPILE_MLOG);
62+
addMlogWatcherOptions(files, ToolAppAction.PROCESS_MLOG);
6363

6464
addAllCompilerOptions(subparser, options, OptionCategory.EMULATOR);
6565
return subparser;

toolapp/src/main/java/info/teksol/mindcode/cmdline/ProcessSchemacodeAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected Argument createArgument(ArgumentContainer container, String optionName
4949
Subparser appendSubparser(Subparsers subparsers, FileArgumentType inputFileType, CompilerProfile defaults) {
5050
Map<Enum<?>, CompilerOptionValue<?>> options = defaults.getOptions();
5151

52-
Subparser subparser = subparsers.addParser(ToolAppAction.DECOMPILE_SCHEMA.getShortcut())
52+
Subparser subparser = subparsers.addParser(ToolAppAction.PROCESS_SCHEMA.getShortcut())
5353
.aliases("process-schematic", "ds", "decompile-schematic")
5454
.description("Load schematic from a binary msch file or the in-game Schematics Library for further processing (decompiling " +
5555
"into a Schemacode definition file, running on the internal emulator or sending to the in-game library)")
@@ -72,7 +72,7 @@ Subparser appendSubparser(Subparsers subparsers, FileArgumentType inputFileType,
7272

7373
addOutputDirectoryOption(files);
7474

75-
addMlogWatcherOptions(files, ToolAppAction.DECOMPILE_SCHEMA);
75+
addMlogWatcherOptions(files, ToolAppAction.PROCESS_SCHEMA);
7676

7777
ArgumentGroup decompilation = subparser.addArgumentGroup("Decompilation options");
7878

toolapp/src/main/java/info/teksol/mindcode/cmdline/ToolAppAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
public enum ToolAppAction {
1010
COMPILE_MINDCODE("cm", new CompileMindcodeAction()),
11-
DECOMPILE_MLOG("pm", new ProcessMlogAction()),
11+
PROCESS_MLOG("pm", new ProcessMlogAction()),
1212
COMPILE_SCHEMA("cs", new CompileSchemacodeAction()),
13-
DECOMPILE_SCHEMA("ps", new ProcessSchemacodeAction()),
13+
PROCESS_SCHEMA("ps", new ProcessSchemacodeAction()),
1414
;
1515

1616
private final String shortcut;

toolapp/src/main/java/info/teksol/mindcode/cmdline/mlogwatcher/MlogWatcherCommand.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
import static info.teksol.mindcode.cmdline.ToolAppAction.*;
88

99
public enum MlogWatcherCommand {
10-
UPDATE (COMPILE_MINDCODE, DECOMPILE_MLOG, COMPILE_SCHEMA, DECOMPILE_SCHEMA),
10+
UPDATE (COMPILE_MINDCODE, PROCESS_MLOG, COMPILE_SCHEMA, PROCESS_SCHEMA),
1111

12-
UPDATE_ALL (COMPILE_MINDCODE, DECOMPILE_MLOG),
13-
UPGRADE_ALL (COMPILE_MINDCODE, DECOMPILE_MLOG),
14-
FORCE_UPDATE_ALL (COMPILE_MINDCODE, DECOMPILE_MLOG),
12+
UPDATE_ALL (COMPILE_MINDCODE, PROCESS_MLOG),
13+
UPGRADE_ALL (COMPILE_MINDCODE, PROCESS_MLOG),
14+
FORCE_UPDATE_ALL (COMPILE_MINDCODE, PROCESS_MLOG),
1515

16-
EXTRACT (DECOMPILE_MLOG, DECOMPILE_SCHEMA),
16+
EXTRACT (PROCESS_MLOG, PROCESS_SCHEMA),
1717

18-
ADD (COMPILE_SCHEMA, DECOMPILE_SCHEMA),
18+
ADD (COMPILE_SCHEMA, PROCESS_SCHEMA),
1919
;
2020

2121
private final Set<ToolAppAction> supportedActions;

toolapp/src/test/java/info/teksol/mindcode/cmdline/ProcessSchemacodeActionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
@NullMarked
1717
class ProcessSchemacodeActionTest {
18-
private final ToolAppAction action = ToolAppAction.DECOMPILE_SCHEMA;
18+
private final ToolAppAction action = ToolAppAction.PROCESS_SCHEMA;
1919

2020
protected Namespace parseCommandLine(String commandLine) throws ArgumentParserException {
2121
ArgumentParser parser = Main.createArgumentParser(Arguments.fileType(), 79);

0 commit comments

Comments
 (0)