[ ] Should the priority-based scheduling be enforced at API level? How should the test suite handle kernels without strict scheduling?
[x] Some kernel implementations may prefer not returning BadId and causing an undefined behavior instead.
Raw interface extensibility:
[x] MutexProtocol should be non_exhaustive? How is the kernel supposed to deal with unknown values?
[x] The same goes for QueueOrder
[ ] Multi-processing
[ ] Some properties added to a Bag might be unsafe to ignore. How can we ensure the safety? What properties might fall under this criterion?
API design:
[x] Implement object safety
[x] The definer methods should be named define to make room for runtime construction.
[ ] r3::kernel::Cfg isn't a pretty name.
[ ] Kernel is not a raw trait. KernelMutex is a raw trait. But they are both in traits.
[ ] Is it really a good idea to require application code to use raw traits in trait bounds but use Kernel for global operations? Kernel being a kitchen sink is actually consistent with higher-level kernel object wrappers (like how Task::set_priority is bound by System: raw::KernelTaskSetPriority). But the real problem is that the raw traits are supposed to be bound by kernel-side semver guarantees.
Raw interface specificity:
BadId
and causing an undefined behavior instead.Raw interface extensibility:
MutexProtocol
should benon_exhaustive
? How is the kernel supposed to deal with unknown values?QueueOrder
Bag
might be unsafe to ignore. How can we ensure the safety? What properties might fall under this criterion?API design:
define
to make room for runtime construction.r3::kernel::Cfg
isn't a pretty name.Kernel
is not araw
trait.KernelMutex
is araw
trait. But they are both intraits
.raw
traits in trait bounds but useKernel
for global operations?Kernel
being a kitchen sink is actually consistent with higher-level kernel object wrappers (like howTask::set_priority
is bound bySystem: raw::KernelTaskSetPriority
). But the real problem is that theraw
traits are supposed to be bound by kernel-side semver guarantees.r3_kernel
:r3_kernel::CfgBuilder
is an awful name.Documentation:
CHANGELOG.md