RuSTy PLC Compiler 0.2
Pre-release
Pre-release
This is a preview of the current state of RuSTy.
While the project is still in very active development, we believe that it could be used for most scenarios.
Features
- Support for most common features of the IEC61131-3 ST definition
- Standard (non object oriented languages) language features
- Standard functions and Datatypes
- Variable Length Arrays
- Classes/Methods (Object Oriented) - Still a proof of concept
- Support for Debugging ST code
- Support for multiple target compilation
- Support for build scripts/ project management
What's coming
Upcoming features include CFC/FBD support, full object oriented support, and parallel compilation.
What's Changed
- DATE, DATE_AND_TIME, TIME, TIME_OF_DAY by @riederm in #173
- allow mulitple files in compilation by @riederm in #174
- WSTRING support by @riederm in #175
- Varargs support by @ghaith in #178
- Add Artifact support by @ghaith in #185
- Parser recovery by @riederm in #187
- fix #190: refactor parser tests into separate modules by @ulmer-a in #194
- Default CLI options by @ulmer-a in #200
- Add support for different encodings by @ghaith in #210
- Bin/Oct/Hex Integer Literals by @ulmer-a in #214
- Underscores in Integer literals by @ulmer-a in #217
- Support multi-named keywords without underscore by @ulmer-a in #213
- Single line variable declarations by @ulmer-a in #226
- Parentheses with string size arguments by @ulmer-a in #229
- Parse 61131-3 Classes by @ulmer-a in #225
- Fix invalid filenames not printing an error by @ulmer-a in #235
- Support RETURN keyword by @ulmer-a in #234
- Literals type annotation by @riederm in #239
- Implement EXIT and CONTINUE loop control statements by @ulmer-a in #241
- Semantic validation by @riederm in #201
- make annotations available in codegen by @riederm in #251
- Support case insesitive keywords by @ghaith in #255
- Docs: Add troubleshooting tips by @ulmer-a in #259
- Pointer and reference support by @ghaith in #242
- Support linking on Linux by @ulmer-a in #243
- Method implementations 1: Variable references by @ulmer-a in #253
- add liblld-dev and llvm-dev to dockerfile apt's by @riederm in #269
- support short type-names for dates and times by @riederm in #270
- Handle exponents on the lexer side, treat them as integer by @ghaith in #263
- Typed literals (INT#123, Color#RED, BOOL#1, ...) by @riederm in #260
- Bitwise access using Literals by @ghaith in #275
- Add support for Direct Access using Variables by @ghaith in #283
- Support for constants issue208 by @riederm in #279
- Preprocess arrays and pointers by @ghaith in #300
- Validation constants need initializers issue294 by @riederm in #298
- Validation constants in blocks issue296 by @riederm in #305
- Validation constants readonly constants issue293 by @riederm in #304
- Constants validation (fb instances not allowed #295, scoped const expressions #292) by @riederm in #306
- issue#267 added sysroot option for linking by @99NIMI in #314
- added support for special chars (#309) by @99NIMI in #321
- added validation for function return types (#273) by @99NIMI in #329
- Add a pointer with array complex test by @ghaith in #333
- VAR_TEMP support by @ghaith in #336
- TOD literlas can now be parsed with 2 and 3 sections (#355) by @99NIMI in #360
- use default initializer for uninitialized globals by @riederm in #363
- Assignment on direct access by @ghaith in #359
- Issue 348 char and wchar implement by @99NIMI in #379
- Multifile Compilation by @ghaith in #382
- Issue 375 add support for any type by @ghaith in #380
- #353 assigning pointer-address to DWORD and vice versa by @riederm in #388
- Issue 277 named / type defined enums by @riederm in #404
- support binary expressions for pointers (#416) by @99NIMI in #422
- Allow multiple object files as input by @ghaith in #419
- added architecture documentation by @riederm in #429
- Issue 407 allow including full files as externals by @99NIMI in #433
- allow optional output assignments, empty assignments will be ignored β¦ by @99NIMI in #437
- validation for array access added, tests added by @99NIMI in #451
- Hardware address by @ghaith in #438
- allow assignments between different pointer types by @riederm in #466
- Add optimization parameters by @ghaith in #473
- Support builtin functions by @ghaith in #469
- #342 added long date types by @99NIMI in #490
- added architecture design record for enums by @riederm in #496
- constant propagation support by @riederm in #504
- constant propagation in ranged type limits by @riederm in #505
- Add validation-only flag (--check) by @ulmer-a in #510
- validate Pointer - Numerics assignments if it is no perfect match by @flavioBachmann in #516
- Multi-type declaration by @flavioBachmann in #517
- Adding ampersand as AND Operator by @flavioBachmann in #518
- 460 builtin functions by @ghaith in #511
- Build Description File by @flavioBachmann in #523
- Packaging by @flavioBachmann in #527
- Build folder by @flavioBachmann in #528
- Multiple Architectures by @flavioBachmann in #533
- Linker for Windows by @flavioBachmann in #538
- Support for Exponents by @ghaith in #484
- #539 changed any date precision to nanoseconds by @99NIMI in #542
- 547 auto conversion for generic types by @99NIMI in #550
- Variables Debugging by @ghaith in #544
- #604 recursive function calls by @99NIMI in #606
- date-time literals comparison by @99NIMI in #610
- Add the range statement to the constant resolver by @ghaith in #612
- Added enum info as an alias in debugging by @ghaith in #623
- 354 duplicate functions should be a problem by @riederm in #622
- 508 validation for assigning output variables not working by @99NIMI in #616
- #625 sub_range check functions refactor by @99NIMI in #626
- Support literal numbers with explicit plus sign (#633) by @volsa in #640
- Add support for parsing hardware addresses in body by @ghaith in #651
- #659 array of struct initialization by @99NIMI in #663
- initialize local VAR CONSTANT function vars by @riederm in #669
- 642 add sizeof builtin function by @mhasel in #672
- #534 Support for line debugging by @99NIMI in #656
- 670 Add debug information per file by @ghaith in #687
- Add linker for MacOS Ventura (13.0.1) by @volsa in #702
- Find and report recursive data structures (#686) by @volsa in #721
- Allow arrays to be passed as function arguments by @volsa in #764
- ADR type annotations by @riederm in #771
- Remove the time depedency by @ghaith in #773
- Allow assigniment of Array/Pointer/Direct Access by @ghaith in #782
- ADR documentation (arrays, strings, structs) by @riederm in #777
- ADR for function calls by @riederm in #779
- generic and derived type validation by @99NIMI in #797
- string to char assignment check encoding by @99NIMI in #806
- fix: Allow empty parameter assignment for Output variables by @volsa in #827
- Move the standard library into the repository by @ghaith in #836
- Variable Length Arrays by @mhasel in #835
- Add unsigned integers to string conversion by @volsa in #852
- Generate warnings on overflows by @volsa in #848
- Display improvement suggestion on assignment to VAR_INPUT {ref} by @volsa in #855
- Array of struct within another struct inline initializer by @mhasel in #853
New Contributors
- @gkerbi made their first contribution in #181
- @ulmer-a made their first contribution in #194
- @rarris made their first contribution in #289
- @99NIMI made their first contribution in #314
- @Riuqlav made their first contribution in #481
- @flavioBachmann made their first contribution in #516
- @abroooo made their first contribution in #549
- @Rahix made their first contribution in #563
- @mhasel made their first contribution in #590
- @volsa made their first contribution in #640
- @r2k-in-the-vortex made their first contribution in #674
Full Changelog: v0.1.0...v0.2.0