Skip to content

ccre-v3.0.0-pre1: Prerelease of CCRE with API 3.0.0-pre1.

Compare
Choose a tag to compare
@celskeggs celskeggs released this 11 Nov 01:16
· 262 commits to devel-3.x.x since this release
Highlights:

* Structure: Removed support for cRIO.
* Structure: Started using Java 8 features everywhere.
* Dataflow: Removed pollability as a dimension of complexity.
* Dataflow: Moved *Mixing methods to instead be default methods on interfaces.
* FRC and roboRIO: Renamed Igneous to FRC.
* Documentation: Added a new Scribble-based documentation system.
* Deployment: Added DeploymentEngine system to manage deployment to robots, which is many times faster than WPILib's deployment tool.

Documentation changes:

* Added a new Scribble-based documentation system.
* Removed examples from last year's FIRSTFare presentation and added this year's examples.
* Continuous integration via Travis CI is now in use, which covers unit testing and checking of certain code maintenance targets, such as keeping license headers up-to-date. This should help future maintainers.
* Javadocumented just about everything important.

Dataflow changes:

* Removed InputPolls. Inputs only now.
* Added DerivedInputs, which replace some functionality of InputPolls.
* Pollable I/O is replaced by interfaces which take polling events and return updating I/O.
* Moved *Mixing methods to instead be default methods on interfaces.
* Added UpdatingInput as a superinterface of the *Input classes.
* send is no longer a fundamental method, but an implementation on top of the new onUpdate.
* Removed `unsend` and replaced it with unsubscription EventOutputs returned by the `send` family of methods.
* Renamed Statuses to Cells and extracted IOs as superinterfaces that merge Inputs and Outputs.
* Converted PIDControl into PIDController and inverted control to make more sense.
* Support for taking derivatives of float channels.
* Added miscellaneous new remixing methods and constant fields.
* Renamed EventStatus.clearListeners to __UNSAFE_clearListeners.

Error handling changes:

* Let setupRobot() and autonomousMain() throw Throwables.
* Added safeSet/safeEvent for top-level handling of errors.
* Removed EventOutputRecoverable and restructured error handling to ensure consistent propagation.

FRC and roboRIO changes:

* Renamed Igneous to FRC.
* Shorted names of everything in FRC.
* Removed the WPILibJ-wrapping style of FRC/Igneous implementation. Direct is the only implementation now.
* Added support for FPGA Counters on the roboRIO.
* Removed WPILib Eclipse plugins as a dependency.
* Added sensorPeriodic as the default polling interval in FRC.
* Renamed IgneousLauncher to FRCImplementation.
* Removed the driver station screen I/O methods.
* Added simpleControl of CAN to FRC and ExtendedMotor.

Deployment and build changes:

* Added DeploymentEngine system to manage deployment to robots, which is many times faster than WPILib's deployment tool.
* Removed dependency on Git in build process; versions are now specified in a source file.

Control interface changes:

* All Joysticks have POV hats now.
* Converted POV hat accesses to angle checks rather than angle and press accessors.
* Added AbstractJoystick to assist conversion of pollable interfaces into updating interfaces.
* Added default ControlBinding.
* Renamed IJoystick to Joystick.

Structural changes:

* Removed support for cRIO.
* Started using Java 8 features everywhere.
* Renamed all of the projects to have shorter and more accurate names.
* Changed expected project structure; added script to autoupgrade projects to v3 structure.
* Removed CCRE Collections.

Testing changes:

* Added FakeTime, for faking time in tests.
* Converted test infrastructure to JUnit.
* Unit tested huge sections of the CCRE that weren't before.

Miscellaneous changes:

* Added an abstraction for Time, for use in time-influenced testing.
* Renamed StorageProvider to Storage.
* Made StorageSegment its own implementation: now final instead of abstract.
* Slimmed down ExpirationTimer.
* Slimmed down StateMachine slightly.
* Changed StateMachine numberOfStates to be a getter.
* Simplified PIDController by only allowing absolute maximums.
* Added support abstractions for the dataflow event dispatch infrastructure.
* Added utility to rewrite CRLFs to LFs.
* Added miscellaneous support abstractions.
* Rearranged a few packages.
* Renamed just about everything to make meanings clearer.

Networking changes:

* Deabstracted the networking system and integrated traffic metrics.
* Added versioning to the Cluck protocol, which is backwards-compatible with v2.x.x Cluck, but only until the first protocol version increment.
* Added ability to subscribe to IOs.
* Deprecated Cluck UNSUB messages; they are replaced with NACKs.
* Cells are no longer RConfable.
* Removed default PoultryInspector link naming.
* Removed openDataInputStream and openDataOutputStream from ClientSocket.
* Removed minimum logging levels from network logging.
* Removed old Cluck searching methods.

UI changes:

* Resized Emulator components so that they require less screen space.
* Added window title to PoultryInspector.

Removals:

* Removed support for Phidget.
* Removed BooleanFilter.
* Removed StringHolder.
* Removed IgneousCore.
* Removed BootLogger.
* Removed ccre.launcher.Launcher dispatcher.
* Removed RLoad client and server.
* Removed Tokenizer.
* Removed the CCRE_Examples project.
* Removed MultipleSourceBooleanController.
* Removed Utils.currentTimeSeconds.
* Removed cRIO workarounds.
* Removed alternate storage implementations.
* Removed miscellaneous premature optimizations.
* Removed all sorts of deprecated and outdated methods.
* Removed deprecated EventOutput and updateWhen code in InstinctModule.
* Removed ApolloGemini2014 and InfernoDante examples.
* Removed vestigal kinect support, as it was only easily supported with the cRIO.
* Removed other vestigal and deprecated utility methods.

Implementation changes:

* Moved useCustomCompressor into FRC.

Bugfixes:

* Fixed incorrect disabling of digital outputs in emulator.
* Improved all sorts of bounds and argument checks throughout the CCRE.
* Fixed lots of edge cases.
* Fixed encoding incompatibilities and standardized on UTF-8.
* Fixed incorrect error propagation when broadcasting.
* Added missing top-level error handling.
* Fixed some miscellaneous race conditions.
* Fixed incorrect naming of mecanum drive code.