-
Notifications
You must be signed in to change notification settings - Fork 13k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add armv7a-vex-v5
tier three target
#131530
base: master
Are you sure you want to change the base?
Conversation
These commits modify compiler targets. These commits modify the If this was unintentional then you should revert the changes before this PR is merged. Some changes occurred in src/doc/rustc/src/platform-support cc @Noratrieb The list of allowed third-party dependencies may have been modified! You must ensure that any new dependencies have compatible licenses before merging. |
3a72a30
to
64c05d2
Compare
This comment has been minimized.
This comment has been minimized.
Some changes occurred in tests/ui/check-cfg cc @Urgau |
This comment has been minimized.
This comment has been minimized.
Can you gives us a summary of which part of the std are implemented, which aren't, at what level and if there are plans or not to extend it. |
they already implement some filesystem operations, it seems, so that's nice. |
Here's the more detailed summary I just added to the target docs:
As for future plans, we currently believe we have implemented everything that we can implement using only publicly available information about the VEX SDK, but if that changes we intend to add support for whatever we can. |
66191cf
to
3a378f1
Compare
Thanks for detailed API view.
Is this because of a fundamental "limitation" of the SDK? Can we expect those modules to ever be implemented? You already have a custom runtime/HAL crate I ask those questions because we have some bad experience with targets stubbing out part of |
Note: I'm not a target maintainer, but I'll just give my two cents here |
re: @Urgau
Yes, as @ion098 says, these modules are not implemented because the VEX SDK does not provide the requisite syscalls to implement them. We have (as far as we know) implemented everything that is possible to implement using the public SDK, without adding a ridiculous amount of runtime (e.g. implementing
My understanding was that limiting any changes to the PAL (as we've done) obviates the need for any As for why we want |
Thanks you both for the addition context.
I was talking about ecosystem crates that assumes that if Anyway, I'm not a t-libs member/reviewer so I will leave this part to them. Btw, PR target that adds the definition + std takes a long time to get merged, if you split them up I can review the compiler part. |
This comment has been minimized.
This comment has been minimized.
095d6f1
to
b358a4b
Compare
I'm not sure if we want to add more targets with broken functionality like wasm32-unknown-unknown. Maybe the existing stuff implemented is enough though. I'm going to nominate it for discussion in a libs meeting. For context, #131530 (comment) has the list of things not implemented. |
We discussed this in the libs meeting today. While this is indeed missing a lot of what would normally be present in a |
This isn't necessarily fixing anything on the V5 in particular (exit requests are handled by CPU0, which then interrupt CPU1 after), but it's certainly more correct and may be required for other single-core VEXos targets if support is added in the future.
0.23.0 most notably removes uses of `#[no_mangle]` from symbols in `vex-sdk` to avoid conflicts with other versions of the crate. Symbols were originally `#[no_mangle]` for the purposes of compiling to a C static library, but this never ended up being useful and would be actively harmful to include in `libstd`.
…now` on armv7a-vex-v5
The Cortex-A9 only has 16 double-precision registers (`d0`-`d15`), so this is the correct VFP instructionset to use.
This release of `vex-sdk` notably removes any (previously misguided) usage of `#[no_mangle]` which would be unsuitable to have in `libstd`.
10ae75d
to
3f6b70c
Compare
The job Click to see the possible cause of the failure (guessed by this bot)
|
☔ The latest upstream changes (presumably #135346) made this pull request unmergeable. Please resolve the merge conflicts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The libs changes look fine to me. Sorry for the delay, it was a big PR.
There are compiler changes here, so r? compiler |
Don't worry about it, we really should have split it up from the start. |
This adds a new tier three target with
std
support calledarmv7a-vex-v5
, targeting the microcontroller used in the VEX V5 student robotics competition. This is a joint effort by the maintainers of the vexide project, which currently provides ano_std
library targeting this device using a custom JSON target, and is intended to improve the UX for users of vexide or vex-rt, and anyone else writing Rust programs for VEX V5.Tier 3 Target Policy Compliance
As listed in the target docs, the following members of the vexide project are the designated target maintainers:
armv7a-vex-v5
follows thecpu-vendor-model
convention used by most tier three targets. E.g.,armv76k-nintendo-3ds
orarmv7k-apple-watchos
.Although the VEX V5 Brain is proprietary, this target does not link to any proprietary binaries or libraries, and is based solely on publicly available information about the VEX SDK.
I understand and assent.
The parts of
std
which are not implemented are appropriately stubbed, and there are no parts of the standard library which authors are obligated not to call.I understand and assent.
I understand and assent.
armv7a-vex-v5
has nearly identical codegen toarmv7a-none-eabihf
, so this is not an issue.I understand.