r3-os/r3

Traitize: Remaining issues

yvt opened this issue · 0 comments

yvt commented

Raw interface specificity:

  • Should the priority-based scheduling be enforced at API level? How should the test suite handle kernels without strict scheduling?
  • Some kernel implementations may prefer not returning BadId and causing an undefined behavior instead.

Raw interface extensibility:

  • MutexProtocol should be non_exhaustive? How is the kernel supposed to deal with unknown values?
  • 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:

  • Implement object safety
  • 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.

r3_kernel:

  • r3_kernel::CfgBuilder is an awful name.

Documentation:

  • Update CHANGELOG.md
  • Define the versioning scheme