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

Split into more modules and files #252

Open
joshlf opened this issue Aug 12, 2023 · 4 comments
Open

Split into more modules and files #252

joshlf opened this issue Aug 12, 2023 · 4 comments
Labels
compatibility-nonbreaking Changes that are (likely to be) non-breaking experience-medium This issue is of medium difficulty, and requires some experience help wanted Extra attention is needed

Comments

@joshlf
Copy link
Member

joshlf commented Aug 12, 2023

Currently, our source code is organized mostly in a few large modules, and even some of the smaller modules are combined within larger files. At this point, it makes sense to split things up somewhat.

@kupiakos has a proposal for this in f5c5193.

If you're going to take a stab at this, please comment first so that I can suggest a module breakdown to start with. We'll want to start with something very coarse-grained so that it's obviously the right move, and then we can get more fine-grained over time if we decide it's worth it.

@joshlf joshlf added the compatibility-nonbreaking Changes that are (likely to be) non-breaking label Aug 12, 2023
@joshlf joshlf mentioned this issue Aug 20, 2023
@joshlf joshlf added help wanted Extra attention is needed experience-medium This issue is of medium difficulty, and requires some experience labels Aug 28, 2023
joshlf added a commit that referenced this issue Sep 6, 2023
In this commit, the module is kept private and its items
re-exported from the crate root. We name it `wrappers`,
but that's a bad (if accurate) name. We can bikeshed the
real name if/when we decide to make it pub.

Makes progress on #252
joshlf added a commit that referenced this issue Sep 6, 2023
In this commit, the module is kept private and its items
re-exported from the crate root. We name it `wrappers`,
but that's a bad (if accurate) name. We can bikeshed the
real name if/when we decide to make it pub.

Makes progress on #252
@jswrenn
Copy link
Collaborator

jswrenn commented Sep 15, 2023

A rough proposal:

  • put conversion related things in pub mod convert
  • rename byteorder to num
  • pub mod marker for markers, like Unaligned and NoCell
  • pub mod gadgets for layout gadgets (e.g., Feature proposal: Layout gadgets. #381)

@joshlf
Copy link
Member Author

joshlf commented Sep 15, 2023

A rough proposal:

  • put conversion related things in pub mod convert

Presumably FromZeroes, FromBytes, AsBytes?

  • rename byteorder to num

I'd push back on this - I think most of the users who need these types probably know about byte order and know that that's what they're looking for. Note that we call out byte order explicitly in the trait docs:

/// `FromZeroes` is ignorant of byte order. For byte order-aware types, see the [`byteorder`] module.
  • pub mod marker for markers, like Unaligned and NoCell

+1

+1 to these going in a dedicated module; name might need bikeshedding.

@kbujari
Copy link

kbujari commented Jan 3, 2024

Hi, I looked over a lot of the code and would like to try taking this on with some guidance. I assume the end goal would be to keep the module interface the same while splitting the code.

The proposal (f5c5193) keeps the top of the module in the src folder rather than using a mod.rs in the respective folder. For example: src/bytes.rs rather than src/bytes/mod.rs. Is there a preferred method here?

@joshlf
Copy link
Member Author

joshlf commented Jan 5, 2024

Hey @kbujari, now isn't a great time for this refactor since we have a lot of outstanding changes that would be affected by a module refactor (ie, it would generate a large amount of rebasing and make PR history hard to follow). It probably makes sense to wait for 0.8.0 to be released - at that point, we'll have fewer changes in flight.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compatibility-nonbreaking Changes that are (likely to be) non-breaking experience-medium This issue is of medium difficulty, and requires some experience help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants