-
Notifications
You must be signed in to change notification settings - Fork 101
A richer tag system #11
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
Comments
So, my view on embedded development (and while I've done this sort of thing professionally for the past 12 years, I'm aware that I'm still a relative newcomer) is this. For me, the difference between embedded software and 'non-embedded' software comes down to privilege. Software that is 'non-embedded' is low privilege - that is, it is isolated in its own virtual memory space, it's limited as to what 'damage' it can do and it has to rely on services (such as the user-facing APIs exposed by drivers) provided by the OS. Embedded applications are generally high privilege - they have access to the physical address space of the processor (whether memory mapped in to their virtual address space, or because there is no MMU), they can cause more 'damage' (i.e. cause a reboot) and they have a limited set of services available. This isn't necessarily a binary either/or - if I'm developing a modem using an RTOS like Nucleus, then I don't have an MMU but I do have a Berkeley socket API (of sorts...) and a filesystem API. But is that OS functionality supported by libstd? No. So it's more embedded that non-embedded. If I was writing a kernel driver for Linux I would consider that embedded development - I don't have access to the same user-space syscalls and I can do bad things with the hardware from a kernel driver. If I'm on a Raspberry Pi, then it's probably not embedded development - even if there's no screen and keyboard connected. But if I'm writing a Neopixel library for the Pi by mapping the DMA registers into my application address space (using /dev/mem), such that the code can only be executed as root and I have direct access to the hardware, then it's probably veering towards embedded, even if the standard library is available. I think the other comment I'd want to make is to echo other calls I've seen to try and stay away from trade names like Arduino, and try and keep these things generic. So, I'm going to propose something like:
I'm happy to accept a Finally, just a quick thought on architectures. To the extent that is matters, I'd propose that we follow whatever conventions LLVM use to describe platforms and architectures. I guess I mean that 'ARM' as a generic term isn't that useful a distinction when the code generation and intrinsics for an ARM7 differ so much to those for a Cortex-A53. If you mean 'arm' as in the LLVM archtype (as opposed to aarch64 or or thumb), then that's fine. |
Interestingly, #12 seems to already be flushing out a number of tags. I propose that we let that survey run its course and use that to inform any decisions we make here. I've put out a request to the community to help flesh out that list on Twitter and Reddit. Other places we should perhaps solicit? |
I'm late but the Rust users forum is a good place. I've also added links to our surveys to the gitter and IRC channels. |
Do we feel like this issue is still valuable? Should this tie into the "better Cargo" story? Maybe CC @therealprof? Otherwise I would propose that we close this issue, and open up a new one that better captures the current state of things. Marking this for a cleanup sweep. If we would like this to stay open, please provide an update to what this issue should be focused on. |
I think the specific architecture tags might be a bit of overkill since our ecosystem nowadays is either very MCU specific or really generic. Just improving the crate story would totally work for me. |
@therealprof do you have anything we can link to here about the things you discussed with the crates.io team? |
@jamesmunns Don't have anything, it's all off the record. But I'll follow up with them... |
@jamesmunns Actually reading through the history of this issue, this is not something I discussed with the team at all. ;) |
This was about changing the labels used in this repository but the issue is out of date because things have changed since then so closing. |
#1 originally proposed using just three labels, Arduino, OpenWRT and RPi, to categorize issues. But @nastevens proposed using a richer tag system. Also check my comment about grouping tags in categories. The questions are:
A-x86
,A-avr
,A-arm
, etc. where A stands for Architecture.arm
,avr
,x86
, etc.". Another; "if your crate doesn't use heap allocation then use theno-heap
tag", etc.The text was updated successfully, but these errors were encountered: