Skip to content

Commit

Permalink
Release 3.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
cardillan committed Jan 26, 2025
1 parent c69b62c commit 75edaa9
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 9 deletions.
8 changes: 4 additions & 4 deletions CHANGELOG.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project now adheres to [Semantic Versioning](https://semver.org/).

## 3.0.0-preview2 - Future release
## 3.0.0 - 2025-01-26

### Fixed

Expand All @@ -13,7 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
* Fixed wrong reference counting for inline functions ([#207](https://github.com/cardillan/mindcode/issues/207)).
* Fixed compiler errors when placing enhanced comments into loops.
* Fixed wrong compile-time and emulator evaluation of `asin`, `acos` and `atan` functions ([#209](https://github.com/cardillan/mindcode/issues/209)).
* Fixed compile-time evaluation potentially processing functions not available in current target. The only affected target was 6, where non-existent functions `asin`, `acos` and `atan` could be compile-time evaluated instead of reported as non-existent.
* Fixed compile-time evaluation potentially processing functions not available in current target. The only affected target was 6, where non-existent functions `asin`, `acos`, `atan` and `packcolor` could be compile-time evaluated instead of reported as non-existent.

### Added

Expand All @@ -25,7 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
### Changed

* More precise calculations of optimization benefits in loop unrolling and call inlining.
* The `sensor` instruction is considered deterministic if a deterministic property of a non-volatile value, which is also not a linked variable, is being queried.
* The `sensor` instruction is considered deterministic if a deterministic property of a non-volatile value, which is not a linked variable, is being queried.
* When clicking on an error or warning in the web application, the entire portion of the source code causing the error or warning is selected.
* Most advanced optimizations were moved to the `basic` level. Only optimizations that might be incorrect in some contexts (such as optimizations replacing computed IDs of Mindustry items with IDs known to the compiler) are left on the advanced level.
* The default optimization level in the web application is now `advanced`.
Expand Down
9 changes: 5 additions & 4 deletions CONTRIBUTING.markdown
Original file line number Diff line number Diff line change
@@ -1,30 +1,31 @@
# Contributing

There's currently a bunch of issues marked with the `help wanted` label. You can also have a look [here](https://github.com/cardillan/mindcode/discussions/167).
There's currently a bunch of issues marked with the [`help wanted`](https://github.com/cardillan/mindcode/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22) label. You can also have a look [here](https://github.com/cardillan/mindcode/discussions/167).

## Guidelines

Mindcode uses JDK22, Maven and Spring Boot.

The project consists of separate modules:
* `mindcode-annotations` contains annotation preprocessor used for automatic code generation
* `mindcode-annotations` contains annotation preprocessor used for automatic code generation.
* `mindcode-compiler` contains several independent parts:
* Mindcode compiler, itself consisting of the grammar definition, parser, AST builder, code generator and optimizer.
* Processor emulator, capable of running mlog code in an emulated environment with limited support for Mindustry World interaction.
* `mindcode-exttest` tool for testing Mindcode compiler/processor emulator under various compiler settings.
* `mindcode-samples`: contains Mindcode and Schemacode samples for the web application.
* `mindcode-schemacode`: contains the grammar definition, compiler and decompiler for Schemacode.
* `mindcode-toolapp`: contains the command-line interface.
* `mindcode-webapp`: contains the web application frontend.

Unit tests are used primarily to verify that source code gets compiled, optimized and executed as expected. This use of unit test
Unit tests are used primarily to verify that source code gets compiled, optimized and executed as expected. This use of unit test is probably quite out of the ordinary, and as a result, unit tests might take some time to execute. Additions of unit tests that would be more in line with the standard usage, even though not always present in current code, is encouraged. Note that some unit tests are outright abused to generate parts of the documentation (sorry).

Please do not make large changes before discussing them first. Especially do not alter existing syntax without prior agreement.

The grammar, AST builder and code generator were recently completely rewritten and should be quite accessible. The optimizers, on the other hand, do not adhere to usual CS compiler standards, are not well documented and appear to be somewhat fragile. A comprehensive refactoring of the optimizers would be great, but is not planned for near future.

### System library

Mindcode now provides a [system library](doc/syntax/SYSTEM-LIBRARY.markdown). Contributions to the system library are welcome: if you have some general utility functions you are willing to share, incorporating them to the system library would help all Mindcode users.
Mindcode now provides a [system library](doc/syntax/SYSTEM-LIBRARY.markdown). Contributions to the system library are welcome and very appreciated: if you have some general utility functions you are willing to share, incorporating them to the system library would help all Mindcode users.

## Running Mindcode locally

Expand Down
3 changes: 3 additions & 0 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
[![Static Badge](https://img.shields.io/badge/web%20app-blue?link=http%3A%2F%2Fmindcode.herokuapp.com%2F)](http://mindcode.herokuapp.com/)
[![Static Badge](https://img.shields.io/badge/doc-mincdcode-green?link=doc%2Fsyntax%2FSYNTAX.markdown)](doc/syntax/SYNTAX.markdown)
[![Static Badge](https://img.shields.io/badge/doc-mlog-green?link=doc%2Fsyntax%2FSYNTAX.markdown)](https://yrueii.github.io/Mlog%20Documentation/)
[![GitHub issue custom search in repo](https://img.shields.io/github/issues-search/cardillan/mindcode?query=is%3Aopen%20label%3Abug&label=open%20bugs&color=red&link=https%3A%2F%2Fgithub.com%2Fcardillan%2Fmindcode%2Fissues%3Fq%3Dis%253Aissue%2520state%253Aopen%2520label%253Abug)](https://github.com/cardillan/mindcode/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug)
[![Static Badge](https://img.shields.io/badge/chat-discord-blue?link=https%3A%2F%2Fdiscord.gg%2FA8vdVdvf)](https://discord.gg/A8vdVdvf)

</div>
Expand All @@ -23,6 +24,8 @@ Please refer to the [documentation](doc/syntax/SYNTAX.markdown) for a complete d

## Latest development

See [issues](https://github.com/cardillan/mindcode/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) for open bugs and possible workarounds.

> [!NOTE]
> Deprecated functionalities from Mindcode 2.x were removed. The system for specifying [language version targets](/doc/syntax/SYNTAX-5-OTHER.markdown#option-target) has been changed.
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>6.2.0</spring.version>
<revision>3.0.0-preview1</revision>
<revision>3.0.0</revision>
</properties>

<dependencies>
Expand Down

0 comments on commit 75edaa9

Please sign in to comment.