Skip to content
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

0.2 stabilization #90

Open
3 of 9 tasks
h33p opened this issue Sep 18, 2022 · 1 comment
Open
3 of 9 tasks

0.2 stabilization #90

h33p opened this issue Sep 18, 2022 · 1 comment
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects

Comments

@h33p
Copy link
Member

h33p commented Sep 18, 2022

GATs have officially been stabilized on nightly, which should hit stable on rustc 1.65 (start of November). It will help us greatly simplify the core memflow traits, and I think it would be a great target to finally reach memflow 0.2 stable shortly after that. This gives us about 7 weeks to finish the work we began.

This issue tracks remaining design issues with memflow. Not everything needs to be done, but they are pretty important:

Core memflow usage:

Primary issues with memflow lie in lack of documentation, complexities of the types involved, which lead to overwhelm. The crux of the issue is with the trait complexity and CGlue emitting a lot of similar types, that cannot be documented and thus it is unclear what is to be used.

  • Make OS/Keyboard traits use GATs.
  • Export core plugin types (OsInstance, ProcessInstance, ConnectorInstance) without the ArcBox suffix and document their usage. This requires changes in CGlue.
  • Document remaining modules.
  • Rework I/O by moving it to separate crate.

CGlue:

Primarily we want to improve developer experience when using CGlue.

  • Free up the base name of a CGlue object for user definitions. Add some sort of suffix, such as Raw.
  • Use build.rs based source code generation to make tools, such as rust-analyzer work better with CGlue objects.

I/O (read_raw_iter/write_raw_iter):

Primary purpose of this is to create a shared I/O crate suitable for memflow and filer usage. Implementing filer-tokio proved to be difficult due to missing metadata when buffers travel across network. Ideal I/O would not compromise on performance and simplicity for both implementation and usage.

  • Define core I/O primitives.
  • Create helpers for simple usage.
  • Move memflow and filer/cloudflow to the shared implementation.
@h33p h33p added enhancement New feature or request help wanted Extra attention is needed labels Sep 18, 2022
@h33p h33p assigned ko1N and h33p Sep 18, 2022
@h33p h33p added this to To do in Version 0.2 via automation Sep 18, 2022
@h33p
Copy link
Member Author

h33p commented Dec 25, 2023

This is not a blocker for immediate 0.2 stabilization, tasks can be moved to 0.3 cycle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
Version 0.2
  
To do
Development

No branches or pull requests

2 participants