Skip to content

rrplug rewrite #22

Description

@catornot

I kind of pushing the limits of squirrel and rrplug is just not powerful enough for some stuff aka it needs better abstraction also it's simply not ready to facilitate more complex interactions with the squirrel wm. the current apis are simply too limiting too.

which means they need to be rewritten

  • add result returns to all sqvm operation traits.
    it might be suprising but those operations can fail, and a panic is not a good solution.
  • mandate SQHandle over rust native types when interacting with the sqvm. here it's better to have a zero cost abstraction like SQHandle since transforming types between rust <-> sqvm is not very cheap this
  • add typed versions of SQArray, SQTable
    the motivation here is to allow fully typed zero constructions, which SQArray and SQTable need to be composable too.
  • add more usages for SQHandle types, the functions on rust types like String, Vec have very extensive apis that are also very nice. the squirrel counterparts need have at least a subset of the functions and have easy conversion between each other.
  • re-implement raw stack operation on the sqvm in rust. this would force also the implementation of constructors in rust for all squirrel objects which means that the conversion previously mentioned would be easier and in general handling squirrel would become easier since it would be as if we are in the runtime itself.
  • implement a more robust (or currently just implement one since it doesn't exist), it would be nice to be able to reload easily plugins that have native squirrel closures, convars, concommands and maybe even hooks?
  • etc/whatever else comes up that needs to be reworked.

this might actually make switch to incrementing major version like a normal crate maintainer, that follows semver.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions