Releases: Open-RIO/ToastAPI
Toast Universal
This updated version of the Toast Build Script will automatically get the latest release of Toast and download it into your Development Environment. Build Script Permissions and Line endings have been fixed to run on Unix systems.
Toast v1.4.0
+Include WPILib/NetworkTables sources in SourceJar.
Toast users can now browse the WPILib, NetworkTables and Toast source in their development environments.
+Executor Priority
Modules can now use the @priority annotation on the start() and prestart() methods to time their execution with other modules.
+Simulation --search
Passing --search after the -sim argument in a development environment will cause Toast to try and find your ToastModule file.
+Run and Launch configs
Now using the latest GradleRIO update, which will automatically generate Run/Launch configs for Simulation, Verification, Remote Debug and Gradle Deploy for IntelliJ and Eclipse users.
Toast v1.3.3
+Module Branches
Modules can now use the annotation-based Branch system. Branches are classes within a module that will only be loaded if a certain module or class is present, meaning Modules have better dependency management.
+Module Console Access
Modules can now have access to the System.in resource, allowing them to queue the command line for data. When a module requests access to the resource, the CommandBus parser is paused to allow the module to retrieve the data.
+Heartbeat
The Heartbeat system is a Thread that keeps a timer of 50Hz (20ms) on a constant clock to allow modules to have systems that require a steady timing system. The Heartbeat system will only launch if there are listeners, meaning it won't clog up the system if nothing is using it. Additionally, if the processing in 1 beat is too long (over 20ms), the system will 'skip' the beat and notify all the listeners that a beat was skipped. This allows the system to operate on a constant and reliable clock, always being a modulus of 20ms
~8-Phase Load System
The LoadPhase system has been changed from 6-Phase to 8-Phase to include the 'Core-Pre' and 'Core-Init' Phases for Core Modules. This also rounds it out to a nice base 8 number, which is nice
~Futures
The ToastThreadPool now has support for Futures, allowing you to retrieve the data from an execution and/or wait for it to complete
Toast v1.3.1
+Core Plugins
Core Plugins are Modules or Groovy Scripts that are loaded at the same time as Toast (before WPILib). This means Core Plugins can have much more influence over the Toast Lifecycle, but may be unstable if the programmer is not familiar with the Class-Loading lifecycle.
+Toast Versioning
The Toast Version is now included in the code and can be read and parsed by modules to make sure code does not break across versions.
+Environmental Status
Better Environmental Status is now handled in Toast. Extra Environmental Data is now provided in crash logs such as Toast Version, Environment Type (Sim, Verification, Embedded), Operating System, FMS Connected and Java information.
Toast v1.3.0
+Add default Delegates for Logging and the Command Bus
Default network connections for Logging Output and Command Bus input, for remote consoles
+Add arrays to Config Files
GroovyPreferences configuration files can now use Arrays to store data
+LoadPhase system
Migrated to the new LoadPhase system, which consists of Bootstrap, Pre-Init, Init, Pre-Start and Start. This allows for more control over phases of loading and simpler debugging for the Toast Core
+ToastThreadPool
Added a Thread Pool implementation, which allows for tasks or calculations to be scheduled for completion by 2 threads. These tasks are queued and executed when a Thread is not busy. The new 'threads' command is used to debug this and view data about the ThreadPool.
~Update USB Command
The 'usb' command can now take a drive name as an argument, as well as load data from a USB drive to the local Toast files, enabling easy loading of modules.
~Improve Concurrency Performance and Stability
Most classes using ArrayList have been migrated to Vectors, and the StateTracker now uses a concurrent form of instance storage, allowing for listeners to be added while in a ticking phase.
~Fix memory leaks
The 'Logger' class had a memory leak due to it storing its entire backlog in RAM. This has been removed and any classes wishing to access the backlog must read from the 'recent.txt' logging file to avoid unnecessary RAM usage. An example implementation is seen in the LoggerDelegate.
Toast v1.1.0
+Support for Code Verification - Now CI tools and gradle users are able to verify their code without starting up a full simulation UI. Code is tested from the standard Disabled -> Autonomous -> Teleop -> ShutDown lifecycle of the robot, which is executed. If any uncaught exceptions occur, the build fails and terminates, letting you know that the code is not working properly.
Toast v1.0.0
Full release!
+Socket Manager
Added the NetworkDelegate API as a dependency. This allows for modules to not compete for Socket availability, as well as compatibility with FMS' limits
+Mass Storage Support
USB Flash Drives or External Storage Media is able to be used for loading Modules, as well as Data Dumps from the RoboRIO's local storage. Modules can run side-by-side or be overriden by the USB drive, allowing for teams to easily debug their code, view logs as well as borrow a USB drive from other teams if their code suddenly fails on them at competition.
Toast v0.5.0
+New Deployment Scripts for teams to easily deploy Toast!
+Update Maven Site
Toast v0.3.0
Added a ton of command-based things as well as refining the Groovy Script support
Toast v0.2.0
First release!