Releases: PLC-lang/rusty
Releases · PLC-lang/rusty
RuSTy PLC Compiler 0.2
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 https://github.com/PLC-...
Rusty Showcase
RuSTy ST Frontend for LLVM
This pre-release marks the point in time where meaningful programs could written in RuSTy