diff --git a/README.md b/README.md index eede7f5a..f9556a14 100644 --- a/README.md +++ b/README.md @@ -184,15 +184,29 @@ Also as of this release, both the compiler and VM can run on non-x86 platforms ### SourcePawn 1.12 -SourcePawn 1.12 is currently in development. +SourcePawn 1.12 was released on November 30, 2024. -This release contains a number of bug fixes and internal improvements. It also greatly improves -error message readability in the style of modern compilers. +This release contains a number of bug fixes and internal improvements. It also +greatly improves error message readability in the style of modern compilers. +The lexer was completely rewritten to make this possible. + +Array type checking and initialization has been completely rewritten. The +generated code is simpler and more compile-time errors can be caught. Error +messages around arrays have been greatly improved. This release contains a number of language changes. + - Natives can now return enum structs and fixed-size arrays. + - Enum structs can be passed to natives. - Function bodies must now be braced. There is no compatibility mode for this change. - `INVALID_FUNCTION` is now type `null_t`. The old internal type `nullfunc_t` has been removed. `INVALID_FUNCTION` and `null` are now equivalent, which means code manually checking for `-1` will not work. There are three functions added to `IPluginContext` to help native code with this change: `GetNullFunctionValue()`, `IsNullFunctionId()`, and `GetFunctionByIdOrNull()`. - Warnings around indentation have been removed. + - Tags have been removed. Old syntax tags must now correspond to declared or builtin types. + - "Fixed" enums have been removed. Enum type checking is the same whether or not the name is capitalized. + - Function aliases have been removed. + - The "using" keyword has been removed and is no longer implemented. + - The `__nullable__` and destructor syntax for handles have been re-introduced. + - Built-in defines and constants are now defined by an in-memory implicit include. + - `#endinput` is no longer necessary. `#include` will no longer double-include.