No pre-compiled version on Python 3.14 on Windows
I'm new at this - so there's a chance I missed something.
I'm working on a small set of python programs that processes .bin log data. My goal is to make each of them cross platform on Mac, Linux and Windows.
Installing Python on Windows I took the latest release - 3.14. Unfortunately, I couldn't use pymavlink without compiling it - and it wanted a rust compiler that I didn't have - and didn't want to include as a requirement.
So I switched to python 3.13 - which I'd been using on my Mac and Linux boxes.
So not really a problem for me - but might be for someone else.
Installing Python on Windows I took the latest release - 3.14. Unfortunately, I couldn't use pymavlink without compiling it - and it wanted a rust compiler that I didn't have - and didn't want to include as a requirement.
So I switched to python 3.13 - which I'd been using on my Mac and Linux boxes.
So that sounds like it must be Python that's now requiring a Rust compiler?
I don't believe we have anything in pymavlink which is gated on you running it under Python 3.14!
IOW - not sure why you've raised an issue against pymavlink... we don't currently publiush on 3.14 - and it sounds like we might want to let the dust settle before trying that :-)
@peterbarker The fastcrc package is where the Rust compiler comes in, which seems to have been introduced as a pymavlink dependency as of 2.4.44. My team ran into a similar issue yesterday, we had to revert from pymavlink 2.4.49 to 2.4.43 for our android app as the build would error out on when trying to install fastcrc.
2.4.49 installs fine on my local linux machine, we only came across the issue when running a build.
Edit: I believe Fastcrc only installs a rust compiler if a wheel doesn't exist. They've since added a wheel for python 3.14 but we're using python 3.10, so I'm still not entirely sure why it didn't work for us.
Ping @ntamas - it seems that fastcrc is a problem on platforms where wheels don't exist, Windows and Android being called out here.
It feels like this could be a recurring problem. We already fall back to the older implementation if fastcrc is not available, so it's really just the entry in the build requirements which is problematic.
Should we remove fastcrc from install_requires?
I would probably replace it with crcmod-plus instead. crcmod-plus provides ABI3 wheels, which are forward-compatible with future Python versions until 4.0. I don’t know whether crcmod-plus provides wheels for Android, but as a last resort we can always modify the requirement specification and ignore it for Android.
I would not remove the requirement entirely because it provides a significant performance boost.
It might also be an option to ask the fastcrc project maintainers to publish ABO3 wheels. That project is built on pyo3 so I think rhat all it should take from their end is to enable a Rist feature flag in the pyo3 dependency and recompile everything.