ROBOTC 3.60 Now Available

Just in time for spring, we are happy to announce the launch of ROBOTC 3.60! We have the full change log from 3.54 to 3.59 BETA and 3.59 BETA to 3.60 below:

3.59 BETA to 3.60 Changelog:

VEX:
• New Standard Models Added for PLTW.
• Update VEX Cortex I2C interrupt handler to handle case where interrupt for last received character is not processed until STOP signal has already been sent.
• Add parameter to I2C Device Driver (VEX Cortex) to indicate whether being called for a “timer tick” or for a “message is now complete”. Add a few more statistics to the error collection.

• Increase VEX Cortex I2C message timeout to 6 milliseconds from 3.
• Start sending VEX Cortex I2C polling messages immediately after last poll has finished. Improves I2C responsiveness for VEX Cortex.

General:
• Updated application and desktop icon quality.
• Fix “Multiple overloads match” error introduced with change that did proper validation of pointer expression with point procedure parameter variable.
• Improved validation of procedure parameter matching for function overloads. Previously when parameter was a pointer, only checked to confirm that calling expression was also a pointer. Check was extended to also (correctly) match on the type of pointer as well.

• Could not change “check array bounds” in Compiler Code Optimization tab. The issue was that after changing the check mark the “code optimization type” would be recalculated and then the “optimization type” radio buttons updated. Array bounds checking is not used in determining the optimization type; but in setting the type it is modified. So the changed check mark was being accepted and then software was overwriting. Fixed.
• Split “auto save” into two individually settable flags: (1) to auto save source files before compile and (2) auto save files when application exits.
• Incorrect code optimization involving ‘struct’ variable offsets and perhaps other cases. For the assignment instruction “ is assigned address of ” compiler was replacing references to " with ". This optimization should only occur for “simple assignments” of “ = ”. Fixed.

• Change ‘nSysTime’ and ‘nPgmTime’ intrinsic variables to “unsigned”. ‘unsigned’ intrinsic variables were being converted to ‘signed’ when used in comparison expressions generating a warning regarding mixed ‘signed’ / ‘unsigned’ comparison. Fixed.
• Upper range check for “array bounds check” opcode used “>” instead of “>=” in comparison allowing ‘one past’ array size as valid.

You can find the full changelog on our official blog post.

As always, please let us know if you have any questions or if you run into any issues or bugs. Enjoy!