dll-syringe icon indicating copy to clipboard operation
dll-syringe copied to clipboard

Viability of building with stable with a subset of features

Open philpax opened this issue 1 year ago • 1 comments

Hi there!

Love the crate, have been using it for a few years now; however, it's always perturbed me that it requires nightly, especially as my use of nightly elsewhere has gone to zero.

I've had a look and it looks like the crate isn't too far off from building on stable with its default features, without rpc, with a few changes:

  • backing the FixedBufferAllocator with a linked list implementation that offers cursors, or backing it with a VecDeque instead
  • adding a polyfill for OnceCell::get_or_try_init that uses the stdlib implementation on nightly and uses a copy of the implementation on stable
  • either polyfilling the various MaybeUninit methods for working with arrays, or removing them entirely and using initialised arrays instead

I think these three changes would be sufficient to make it build and run on stable, which would make it much easier to integrate into otherwise-stable projects.

Would you be interested in a PR for these changes? If so, which variants would you prefer? My personal opinion is that DLL injection is enough of an outlier event to allow for less-efficient implementations (i.e. the VecDeque and initialised arrays), but I don't want to interfere with your vision for the project.

philpax avatar Apr 28 '24 01:04 philpax