ccre-v3.0.0-pre1: Prerelease of CCRE with API 3.0.0-pre1.
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.