- Added support for multiple output directories - you can now specify multiple
-oflags to copy compiled .pex files to multiple locations. #18
...
- Added
versioncommand — runpapyrus versionto display the current compiler version. - String literals are now accepted as default values for typed properties and function parameters and are automatically converted to the declared type.
int Property MyProp = "123" Auto ; now valid — "123" is converted to 123Int Function MyFunc(int n1, int n2 = "12") ; "12" is converted to 12 EndFunction
- The compiler now reports an error when a script referenced in
extendsor a variable type cannot be found, instead of failing silently. - The compiler now reports an error when two scripts with the same name are found in different source folders.
- Added a check that the script name declared in
Scriptnamematches the source file name. - Default parameter values are now validated to be type-compatible with the declared parameter type.
- Improved error messages to be clearer and more consistent (e.g., "undefined identifier" instead of "variable declaration not found").
- Internal compiler errors now display a structured diagnostic message with version info, a stack trace, and instructions for reporting the issue, instead of crashing with an unhelpful message.
- Fixed incorrect handling of
Noneas a default value in properties and function parameters. - Fixed a compiler crash when
Nonewas used in arithmetic or logical expressions (e.g.,None + 1). A proper error message is now shown instead. - Fixed a compiler crash when an undefined script type was used in expressions that require conversion (for example,
value && truewherevaluehas an unknown type). The compiler now reports an undefined type error instead of crashing. - Fixed an issue where calling a function with default parameters inside a
Stateblock was not validated correctly (#14). - Fixed parsing of comments inside parenthesized expressions and call argument lists (for example,
if !(PlayerRef ;/comment/;)). The compiler now accepts these scripts instead of failing with a parser error.
- Logical Operators Fix
- Fixed
&&and||operators to evaluate expressions correctly.
- Fixed
-
Error Messaging Improvements
- Enhanced and added error messages for missing or incorrect arguments when using the console.
- Fixed the error message when attempting to call a function with fewer arguments than required.
-
Compatibility Enhancements
- Improved and fixed compatibility with the latest V compiler version V compiler f3d2eb1 (weekly.2025.09).
- Dependency Resolution During Casting
- Fixed an issue with dependency resolution during casting operations, such as
DialogueGenericVampire as VampireQuestScript. (#8)
- Fixed an issue with dependency resolution during casting operations, such as
-
Header File Parsing Enhanced
- Header files are now parsed selectively. For instance, if you only use
FormandGame, only these headers will be parsed from the directories. - Header search paths now include folders from the
-i "..."arguments. For instance, if-i "src/MyPapyrusFile.psc"is specified, thesrcfolder is added to the search paths. - The default search path no longer includes
bin\papyrus-headers. - The
bin\papyrus-headersfolder has been removed.
- Header files are now parsed selectively. For instance, if you only use
-
Updated
-iArgument Handling- The
-i "..."argument now supports both source directories and specific source files. For example:-i "src/MyPapyrusFile.psc".
- The
-
Improved Original Compiler Integration
- Arguments
-i,-h, and-oare now passed to the original compiler more accurately when using the-originalflag.
- Arguments
-
Compatibility Enhancements
- Improved and fixed compatibility with the latest V compiler version V compiler da228e9 (weekly.2024.36).
-
New Arguments Added
- Added the
-checkargument. - Added the
-statsargument.
- Added the
-
CI/CD and Benchmarking
- Line Number Display Bug Fix
- Fixed the bug related to incorrect line number display.