This is an alpha release of WPILib for the 2027 season. Please join the discussions regarding Systemcore alpha testing at https://github.com/wpilibsuite/SystemcoreTesting/. This release is meant to provide quality-of-life improvements to Alpha 7 (while maintaining compatibility with most vendordeps) ahead of a vendordep-breaking Beta 1 release.
Some notable changes:
- Added backwards compatibility shim so Selectable works with older (2026) dashboards
- Added Java module support
- Fixed Romi backwards compatibility
- DataLog deletion threshold increased, match logs are not deleted, automatic transfer to USB if late mounted, errors now reported as alerts
- Added robot mode scopes to cmdv3
- Many bugfixes and other improvements
If you're starting from an 2027 Alpha 7 project, VS Code will prompt you to update the project to Alpha 8. This is not a full import and will be done in-place. Alpha 8 should be largely compatible with Alpha 7 vendordeps; the main exception is the C++ version of PathPlanner. Systemcore image 14 or later is required for this release. FIRST Driver Station Alpha 7 or later is also required for this release.
If you're starting from a 2026 or 2027 Alpha 6 or earlier robot project, you will need to import your project to create a 2027 project. The import process is important, as it will make a few automated corrections for some breaking changes. It is also necessary to import vendor libraries again, since older vendor libraries must be updated to be compatible with 2027 Alpha 7/8 projects. If you're upgrading from an 2027 Alpha 6 or earlier release, you will need to additionally fix the Main class by changing Robot.class to Robot::new or creating a new project and copying Main.java from it.
The 2027 documentation for WPILib is located at https://docs.wpilib.org/en/latest/.
If you're new to WPILib, start with Getting Started.
System Requirements: WPILib requires 64-bit Windows 11 (32-bit is not supported), Ubuntu 26.04, or macOS 15 or higher. C++ teams should note that the latest version of Visual Studio is required for desktop builds. Mac users will need to have the Xcode Command Line Tools installed before running the installer. This can be done by running xcode-select --install in the Terminal.
Known issues with this release can be found in Systemcore Testing issues.
WPILib is developed by a small team of volunteers and the FIRST community.
Downloads
- Windows (x64) (2.4 GB) mirror
- Windows (arm64) (2.5 GB) mirror
- Mac (Arm) (2.2 GB) mirror
- Mac (Intel) (2.3 GB) mirror
- Linux (x64) (2.9 GB) mirror
- Linux (arm64) (2.6 GB) mirror
What's Changed since 2027.0.0-alpha-7 (selected changes)
Commands v3
- Add robot mode scopes by @SamCarlberg in #9271
- Do not track command-scoped bindings for cleanup by @SamCarlberg in #9401
- Prevent new states from being added to state machines after no-arg
switchFromAny()calls by @SamCarlberg in #9428 - Prevent unsafe commands from running during disabled by @SamCarlberg in #9417
- Allow triggers to be garbage collected when their creation scope exits by @SamCarlberg in #9310
- Add
onExitcommand callback to always run when a command stops running by @SamCarlberg in #9402 - Trigger: add ifTrue by @PeterJohnson in #9403
- Add Commands v3-compatible SysIdRoutine by @DeltaDizzy in #8304
- Fix awaitCompletion by @hadley31 in #9381
- Performance improvement for schedule() by @Daniel1464 in #9365
- Track running commands by their original run IDs when awaiting by @SamCarlberg in #9531
- Add special handling for yielding coroutine functions by @SamCarlberg in #9548
Data Logging
- Avoid repeated warnings on DataLog overflow by @PeterJohnson in #9425
- DataLogManager: use alerts for low free space by @PeterJohnson in #9562
- Accept datalog files as command line parameters by @PeterJohnson in #9489
- Don't delete match logs when cleaning up logs by @sciencewhiz in #9584
- Periodically check for USB and transfer log file by @PeterJohnson in #9570
drivers
- Remove Talon and VictorSP by @TheComputer314 in #9391
epilogue
- Provide one entrypoint; use service loading to find generated loggers by @SamCarlberg in #9493
hal
- Fix CAN Streams swapping flags and length by @ThadHouse in #9412
- Connect mrclib Team Number by @Kevin-OConnor in #9440
Java Plugins
- Add annotation processor to validate correct usage of opmode annotations by @SamCarlberg in #9250
- Show provenance and suppression instructions in compile-time errors by @SamCarlberg in #9418
GUI applications (including simulation GUI)
- Fix bugs in glass UI and tweak styling by @GrahamSH-LLK in #9232
- Scale the GUI by content scale, not window pixel density by @r4stered in #9396
- Display sim devices in GUI as a slash-separated tree by @PeterJohnson in #9354
- Add DS alerts to sim GUI by @PeterJohnson in #9353
- Use relative paths for Field2d images in saved files by @PeterJohnson in #9545
NetworkTables
- Update send mode after subscription changes by @PeterJohnson in #9430
- NetworkOutgoingQueue: fix bookkeeping by @PeterJohnson in #9429
- Update InstanceImpl::Destroy() to wait for listener callback completion by @kcooney in #8226
- Stop NetworkServer's loop before its members are destroyed by @AustinSchuh in #9508
- Persist property-only updates by @PeterJohnson in #9529
- Change topic metadata UID fields to int64_t by @PeterJohnson in #9530
Romi
- Implement Romi WS backwards compatibility by @PeterJohnson in #9470
Tunables
- Add getTuneRevision to Tunable API by @PeterJohnson in #9404
- Add backwards compatibility shim for Selectable by @PeterJohnson in #9581
wpical
- Fix potential deadlock by @ThadHouse in #9366
- Remove absolute path in generated minimath file by @Gold856 in #9389
wpilib
- Fix Java exports warnings by @SamCarlberg in #9360
- Keep Watchdog times in integer nanoseconds by @AustinSchuh in #9506
- Publish the current WPILib version to NT by @PeterJohnson in #9582
wpimath
- Update the Kraken X60 DCMotor factories to use values from the CTRE Motor Testing Lab by @bhall-ctre in #9378
- Fix incorrect rename of MatrixStruct by @Gold856 in #9468
- Remove non-unit-safe Trajectory.SampleAt() overload from C++ by @calcmogul in #9472
- Fix Celsius and Fahrenheit telemetry logging by @Arthur031221 in #9497
- Fix rounding issue in IsStabilizable() by @calcmogul in #9491
- Implement isStabilizable with EJML by @calcmogul in #9214
- Replace instances of speeds with velocities by @calcmogul in #9427
- Remove uncontrolled state from LQR QRN overload test by @calcmogul in #9513
- Remove Trajectory's dependence on Pose2d by @calcmogul in #9524
- Fix C++ trajectory sample sorting by @calcmogul in #9566
- Simplify trajectory classes by @zachwaffle4 in #9532
- Fix HolonomicTrajectory transform by @calcmogul in #9568
Java units
- Improve return type of min/max utilities by @MathNerd28 in #9477
wpiutil
- Add a Java Option type by @SamCarlberg in #9290
- Fix lost wakeups by @PeterJohnson in #9424
- Fix stacktrace formatting in jni_util by @thenetworkgrinch in #9457
- Add projected binary search functions by @zachwaffle4 in #9534
- Build requireNonNullParam's message only when the argument is null by @Project516 in #9575
Examples
- Remove unescessary code in C++ Getting Started example by @sciencewhiz in #9387
- Remove DrivetrainSplineTrajectoryGenerator usage by @calcmogul in #9458
- Make Hatchbot cmdv3 examples idiomatic by @SamCarlberg in #9447
- Use MatchState in Rebuilt cmdv3 example by @sciencewhiz in #9444
- Fix dangling reference to distance variable by @calcmogul in #9528
New Contributors
- @GrahamSH-LLK made their first contribution in #9232
- @Arthur031221 made their first contribution in #9497
- @MathNerd28 made their first contribution in #9477
- @qwertychouskie made their first contribution in #9452
Full Changelog: v2027.0.0-alpha-7...v2027.0.0-alpha-8
SHA256 Hashes
4d78b8bf332b643b25a1afcb46cf9211ff607746f3c531ecc2d896ba9f349773 WPILib_Linux-Arm64-2027.0.0-alpha-8.tar.gz
000ad109bbd0bbf043cb157f0485c43969bbc52af7d82fe2c4b161af82f30341 WPILib_Linux-x64-2027.0.0-alpha-8.tar.gz
8ec4925d7d1d838c3c19d917759a9778530993d746ea39f116d95237a1bb82e4 WPILib_Windows-Arm64-2027.0.0-alpha-8.iso
e04c56eeb449d272c3ed7ec0a76f2436bfff90fa40c79e7a3d553f302fbfa93d WPILib_Windows-x64-2027.0.0-alpha-8.iso
926da3d4564b4fdd8ee4b1f147b511fac0031822f18da397b15cc11d7ba82e4c WPILib_macOS-Arm64-2027.0.0-alpha-8.dmg
e618ce45eaa98576d4dc8152038c947886fee120f0ca69c38eb4ff3fac424c12 WPILib_macOS-Intel-2027.0.0-alpha-8.dmg